Description
对于x,如果不存在一个小于x的正数y使得x和y的最大公约数大于1,则我们把x称为P-number,反之则不是P-number。
现在给你一个整数的序列,你的任务是计算序列中P-number的和。
Input
输入有多组测试数据。
对于每组测试数据:第一行为一个整数N(1≤N≤1000)。第二行为N个整数,每个整数的范围都是1到1000。
Output
对于每组测试数据,输出P-number的和
Sample Input
3
5 6 7
1
10
Sample Output
12
0
分析:
本题是要求出在所给数字中的素数的和;
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- int main()
- {
- int n,sum;
- int array1[1001];
- int array2[1001];
- while(scanf("%d",&n)!=EOF)
- {
- memset(array1,0,sizeof(array1));
- memset(array2,0,sizeof(array2));
- sum=0;
- for(int i=0;i<n;i++)
- {
- cin>>array1[i];
- }
- for(int i=0;i<n;i++)
- {
- for(int j=1;j<array1[i];j++)
- {
- int a=array1[i];
- int b=j,c;
- c=a%b;
- while(c!=0)
- {
- a=b;
- b=c;
- c=a%b;
- }
- if(b>1)
- {
- array2[i]=1;
- }
- }
- }
- for(int i=0;i<n;i++)
- {
- if(array2[i]==0)
- {
- sum+=array1[i];
- }
- }
- cout<<sum<<endl;
- }
- return 0;
- }