素数判定
1 #include <stdio.h> 2 #include <math.h> 3 4 int isprimer(int m); 5 int main() 6 { 7 int n, x, y, k, sum; 8 while (scanf_s("%d %d", &x, &y)) 9 { 10 if (x == 0 && y == 0) 11 break; 12 for (int n = x; n <= y; n++) 13 { 14 sum = n * n + n + 41; 15 if (!isprimer(sum)) 16 { 17 printf("Sorry "); 18 break; 19 } 20 } 21 printf("OK "); 22 } 23 return 0; 24 } 25 26 int isprimer(int m) 27 { 28 int i = 2; 29 int j = 1; 30 for (;i < sqrt(m);i++) 31 { 32 if (m / i == 0) 33 { 34 j = 0; 35 return j; 36 } 37 else 38 j = 1; 39 } 40 return j; 41 }
参考答案
1 int main(void) 2 { 3 int m, n; 4 int x[] = 5 { 6 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1 13 }; 14 15 while (scanf("%d%d", &m, &n), m || n) 16 { 17 for (m += 39, n += 39; x[m] && m <= n ; m++); 18 puts(m > n ? "OK" : "Sorry"); 19 } 20 21 return 0; 22 }