#include <stdio.h>
#include <stdlib.h>
/* funcao capaz de verificar se um numero eh primo */
int eh_primo( unsigned long long n )
{
unsigned long long i = 0;
if(n <= 1)
return 0;
if( (n % 2) == (0 && n > 2) )
return 0;
for( i = 3; i < n / 2; i += 2 )
if( n % i == 0 )
return 0;
return 1;
}
int main( void )
{
unsigned long long k, m, n;
unsigned long long soma = 0;
unsigned long long contador = 0;
long double media;
/* Verifica se o intervalo eh valido*/
if( n > m )
{
/* percorre todos os numeros no intervalo */
for( k = m; k <= n; k++ )
{
/* verifica se o numero atual eh um primo */
if( eh_primo(k) )
{
/* faz o somatorio do numero primo encontrado */
soma += k;
/* incrementa contador de numeros primos */
contador++;
}
}
}
/* se houver ao menos um numero primo no intervalo, calcula a media */
if( contador > 0 )
{
/* Calcula media aritmetica dos primos */
media = soma / (long double) contador;
/* exibe a media aritmetica na tela */
printf("media = %Lg\n", media
); }
/* exibe contador de numeros primos no intervalo */
printf("contador = %llu\n", contador
);
/* exibe o somatorio na tela */
printf("somatorio = %llu\n", soma
);
return EXIT_SUCCESS;
}
/* fim-de-arquivo */
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8qIGZ1bmNhbyBjYXBheiBkZSB2ZXJpZmljYXIgc2UgdW0gbnVtZXJvIGVoIHByaW1vICovCmludCBlaF9wcmltbyggdW5zaWduZWQgbG9uZyBsb25nIG4gKQp7Cgl1bnNpZ25lZCBsb25nIGxvbmcgaSA9IDA7CgoJaWYobiA8PSAxKQoJCXJldHVybiAwOwoKCWlmKCAobiAlIDIpID09ICgwICYmIG4gPiAyKSApCgkJcmV0dXJuIDA7CgoJZm9yKCBpID0gMzsgaSA8IG4gLyAyOyBpICs9IDIgKQoJCWlmKCBuICUgaSA9PSAwICkKCQkJcmV0dXJuIDA7CgoJcmV0dXJuIDE7Cn0KCgppbnQgbWFpbiggdm9pZCApCnsKCXVuc2lnbmVkIGxvbmcgbG9uZyBrLCBtLCBuOwoJdW5zaWduZWQgbG9uZyBsb25nIHNvbWEgPSAwOwoJdW5zaWduZWQgbG9uZyBsb25nIGNvbnRhZG9yID0gMDsKCWxvbmcgZG91YmxlIG1lZGlhOwoKCXNjYW5mKCIlbGx1JWxsdSIsJm0sJm4pOwoKCS8qIFZlcmlmaWNhIHNlIG8gaW50ZXJ2YWxvIGVoIHZhbGlkbyovCglpZiggbiA+IG0gKQoJewoJCS8qIHBlcmNvcnJlIHRvZG9zIG9zIG51bWVyb3Mgbm8gaW50ZXJ2YWxvICovCgkJZm9yKCBrID0gbTsgayA8PSBuOyBrKysgKQoJCXsKCQkJLyogdmVyaWZpY2Egc2UgbyBudW1lcm8gYXR1YWwgZWggdW0gcHJpbW8gKi8KCQkJaWYoIGVoX3ByaW1vKGspICkKCQkJewoJCQkJLyogZmF6IG8gc29tYXRvcmlvIGRvIG51bWVybyBwcmltbyBlbmNvbnRyYWRvICovCgkJCQlzb21hICs9IGs7CgoJCQkJLyogaW5jcmVtZW50YSBjb250YWRvciBkZSBudW1lcm9zIHByaW1vcyAqLwoJCQkJY29udGFkb3IrKzsKCQkJfQoJCX0KCX0KCgkvKiBzZSBob3V2ZXIgYW8gbWVub3MgdW0gbnVtZXJvIHByaW1vIG5vIGludGVydmFsbywgY2FsY3VsYSBhIG1lZGlhICAqLwoJaWYoIGNvbnRhZG9yID4gMCApCgl7CgkJLyogQ2FsY3VsYSBtZWRpYSBhcml0bWV0aWNhIGRvcyBwcmltb3MgKi8KCQltZWRpYSA9IHNvbWEgLyAobG9uZyBkb3VibGUpIGNvbnRhZG9yOwoKCQkvKiBleGliZSBhIG1lZGlhIGFyaXRtZXRpY2EgbmEgdGVsYSAqLwoJCXByaW50ZigibWVkaWEgPSAlTGdcbiIsIG1lZGlhICk7Cgl9CgoJLyogZXhpYmUgY29udGFkb3IgZGUgbnVtZXJvcyBwcmltb3Mgbm8gaW50ZXJ2YWxvICovCglwcmludGYoImNvbnRhZG9yID0gJWxsdVxuIiwgY29udGFkb3IgKTsKCgkvKiBleGliZSBvIHNvbWF0b3JpbyBuYSB0ZWxhICovCglwcmludGYoInNvbWF0b3JpbyA9ICVsbHVcbiIsIHNvbWEgKTsKCglyZXR1cm4gRVhJVF9TVUNDRVNTOwp9CgovKiBmaW0tZGUtYXJxdWl2byAqLwo=