#include<stdio.h> #define MAX 1000000 int sieve_table[MAX] = {0}; void init_table() { int i, j; for( i = 2; i < MAX; i++) { if(!sieve_table[i]) { for( j = 2 * i; j < MAX; j+=i) { sieve_table[j] = 1; } } } } int isPrime(int n) { int i; if(n < MAX) return !sieve_table[n]; else { if(n%2==0 || n%3==0) return 0; for( i = 6; i < MAX && i * i < n; i+=6) { if(n%(i-1)==0) return 0; if(n%(i+1)==0) return 0; } } return 1; } int main() { int n, i; init_table(); while(scanf("%d", &n)==1) { if(isPrime(n)) printf("yes\n"); else printf("no\n"); } return 0; }
表建太大嗎?..