给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。
Input
第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)
第2 - N + 1行:每行1个数(2 <= Sii <= 10^9)
Output
输出共N行,每行为 Yes 或 No。
Sample Input
5 2 3 4 5 6
Sample Output
Yes Yes No Yes No
#include<bits/stdc++.h> using namespace std; bool init(int a) { for(int i=2;i*i<=a;i++) if(a%i==0)return false; return true; } int main() { int n,a; cin >> n; while(n--) { cin >> a; if(init(a))cout<<"Yes" << endl; else cout << "No" << endl; } return 0; }
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30 26 0
Sample Output
3 2
#include<bits/stdc++.h> using namespace std; const int MAXN=10000; int isprime[MAXN]; int main() { int n; memset(isprime,1,sizeof(isprime)); isprime[0]=isprime[1]=0; for(int i=2;i<MAXN;i++) { if(isprime[i]) { for(int j=i*i;j<MAXN;j+=i) isprime[j]=0; } } while(scanf("%d",&n)==1&&n) { int cnt=0; for(int i=2;i<n/2;i++) { if(isprime[i]&&isprime[n-i]) cnt++; } cout << cnt << endl; } return 0; }