// UVa 10200 - Prime Time
#include <stdio.h>
#include <math.h>
#define MAX_N 10000
int cumulative_table[MAX_N + 1];
void printPercentage(int part, int total) {
//UVa judge doesn't accept it without the 1e-9
printf("%.2lf\n", (part * 100.0) / (double) (total) + 1e-9);
}
int main() {
for (int i = 0; i <= MAX_N; i++) {
int possible_prime = i * i + i + 41;
int possible_prime_root = sqrt(possible_prime);
bool prime = true;
for (int j = 3; j <= possible_prime_root; j += 2) {
if (possible_prime % j == 0) {
prime = false;
break;
}
}
if (prime)
cumulative_table[i] = cumulative_table[i - 1] + 1;
else
cumulative_table[i] = cumulative_table[i - 1];
}
int a, b;
while (scanf("%d%d", &a, &b) != EOF) {
int count;
if (a > 0)
count = cumulative_table[b] - cumulative_table[a - 1];
else
count = cumulative_table[b] - cumulative_table[a] + 1;
printPercentage(count, b - a + 1);
}
return 0;
}
Monday, April 20, 2015
UVa 10200 - Prime Time
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment