• 素数求和问题


    原题链接(素数求和问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
    描述
    现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。 
    输入
    第一行给出整数M(0<M<10)代表多少组测试数据
    每组测试数据第一行给你N,代表该组测试数据的数量。
    接下来的N个数为要测试的数据,每个数小于1000
    输出
    每组测试数据结果占一行,输出给出的测试数据的所有素数和
    样例输入
    3
    5
    1 2 3 4 5
    8
    11 12 13 14 15 16 17 18
    10
    21 22 23 24 25 26 27 28 29 30
    
    样例输出
    10
    41
    52
     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 int main(){
     5     int M,N,a,flag,sum;
     6     cin>>M;
     7     while(M--){
     8         cin>>N;
     9         sum=0;
    10         for(int i=0;i<N;i++){
    11             cin>>a;
    12             flag=0;
    13             if(a==1)
    14                 continue;
    15             for(int j=2;j<=sqrt(a);j++)
    16                 if(a%j==0)
    17                     flag=1;//如果a不是素数,flag标记1
    18             if(flag==0)
    19                 sum+=a; 
    20         }
    21         cout<<sum<<endl;
    22     }
    23     return 0;
    24 } 

    优化:

     1 //素数打表,时间上更优化 
     2 #include<iostream>
     3 int a[1010];//每个数小于1000,数组开到1010足够
     4 int b[1010];//存放素数
     5 using namespace std;
     6 void prime(){
     7     for(int i=2;i<=1010;i++)
     8         b[i]=1;
     9     b[1]=0;//1不是素数
    10     for(int i=2;i<=1010;i++)
    11         for(int j=i+i;j<=1010;j+=i)
    12             b[j]=0;//不是素数标记0,其余为1是素数 
    13 }
    14 int main(){
    15     int N,M,sum;
    16     cin>>M;
    17     while(M--){
    18         cin>>N;
    19         int sum=0;
    20         prime();
    21         for(int i=0;i<N;i++){
    22             cin>>a[i];
    23             if(b[a[i]]==1)
    24                 sum+=a[i];
    25         }
    26         cout<<sum<<endl;    
    27     }
    28     return 0;
    29 } 
  • 相关阅读:
    git笔记
    微信扫码支付 php
    linux 下远程连接windows
    ubuntu15.10下搭建cordova+ionic开发环境
    Linux下磁盘分区挂载
    协议抓包分析软件
    MySQL分表的三种方法
    html5的audio实现高仿微信语音播放效果
    ThinkPHP页面跳转success与error方法
    jquery正则表达式验证(手机号、身份证号、中文名称)
  • 原文地址:https://www.cnblogs.com/geziyu/p/9320732.html
Copyright © 2020-2023  润新知