例题(4.2) 简单素数推断
|
||||||||||||||||||||||||||||||
#include <stdio.h> #include <math.h> int isPrime(int n) { if(n < 6) { if(n == 1 || n == 4) { return 0; } else { return 1; } } else /* if(n >= 6) */ { int r = n%6; if(r == 1 || r == 5) /* maybe prime */ { int d, y; y = (int) sqrt((double) n); for(d = 6; d <= y; d += 6) { if(n%(d - 1) == 0 || n%(d + 1) == 0) { return 0; } } return 1; } else { return 0; } } } int main() { int n; const char *answer[] = {"no", "yes"}; scanf("%d", &n); printf("%s\n", answer[isPrime(n)]); return 0; } |