题意:输入一个数判断是不是素数,并规定2不是素数。
析:一看就很简单吧,用素数筛选法,注意的是结束条件是n<0,一开始被坑了。。。
不说了,直接上代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; typedef long long LL; const int maxn = 16000 + 10; int prime[maxn]; void init(){ memset(prime, 0, sizeof(prime)); for(int i = 2; i < sqrt(maxn+0.5); ++i) if(!prime[i]) for(int j = i * i; j < maxn; j += i) if(!prime[j]) prime[j] = 1; } int main(){ init(); int n, kase = 1;; while(scanf("%d", &n), n > 0){ printf("%d: ", kase++); if(1 == n || 2 == n || prime[n]) puts("no"); else puts("yes"); } return 0; }