1563:SumSumSum

Description

对于x,如果不存在一个小于x的正数y使得x和y的最大公约数大于1,则我们把x称为P-number,反之则不是P-number。
现在给你一个整数的序列,你的任务是计算序列中P-number的和。

Input

输入有多组测试数据。
对于每组测试数据:第一行为一个整数N(1N1000)。第二行为N个整数,每个整数的范围都是1到1000。

Output

对于每组测试数据,输出P-number的和

Sample Input

3
5 6 7
1
10

Sample Output

12
0


分析:

本题是要求出在所给数字中的素数的和;

代码:

  1. #include<iostream>  
  2. #include<cstdio>  
  3. #include<cstring>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     int n,sum;  
  8.     int array1[1001];  
  9.     int array2[1001];  
  10.     while(scanf("%d",&n)!=EOF)  
  11.     {  
  12.         memset(array1,0,sizeof(array1));  
  13.         memset(array2,0,sizeof(array2));  
  14.         sum=0;  
  15.         for(int i=0;i<n;i++)  
  16.         {  
  17.             cin>>array1[i];  
  18.         }  
  19.         for(int i=0;i<n;i++)  
  20.         {  
  21.             for(int j=1;j<array1[i];j++)  
  22.             {  
  23.                 int a=array1[i];  
  24.                 int b=j,c;  
  25.                 c=a%b;  
  26.                 while(c!=0)  
  27.                 {  
  28.                     a=b;  
  29.                     b=c;  
  30.                     c=a%b;  
  31.                 }  
  32.                 if(b>1)  
  33.                 {  
  34.                     array2[i]=1;  
  35.                 }  
  36.             }  
  37.         }  
  38.         for(int i=0;i<n;i++)  
  39.         {  
  40.             if(array2[i]==0)  
  41.             {  
  42.                 sum+=array1[i];  
  43.             }  
  44.         }  
  45.         cout<<sum<<endl;  
  46.     }  
  47.     return 0;  

猜你喜欢

转载自blog.csdn.net/kyrieee/article/details/80389764