C语言 · 素数求和

发布时间:2019-05-18  栏目:SQL  评论:0 Comments

难题来源于PAT平台,此题又是费了壹番心血。标题要求输出给定区间内的素数个数并对她们求和。具体思路是行使循环剖断素数,将结果传递给调整变量,由调控变量再来剖断是还是不是实施自增以及求和。当然这里不可不要留心一既不是素数也不是合数。

算法进步 素数求和  

上边是代码:

岁月范围:一.0s   内部存款和储蓄器限制:25陆.0MB

复制代码 代码如下:

    

#include <stdio.h>
int main ()
{
 int a=0,b=0;
 int n=0,sum=0;
 int x=0,i=0;
 scanf(“%d %d”,&a,&b);
 int check=一; //假如为素数
 for (x=a;x<=b;x++){
     check=1;
     for (i=2;i<x;i++){
       if (x%i==0){
       check=0;
       break;
       }     
//该循环用于推断是或不是为素数,遍历3次小于x的数,假诺有能整除x的即给变量赋值为0,并一向跳出循环
     }
     if (check != 0 && x!=1){
       n++;
       sum+=x;
     } //该if用于决断在此以前循环传递的check值,并且参加x是或不是为壹的论断
 }
 printf(“%d %d”,n,sum);
 return 0;
}

主题素材讲述

您恐怕感兴趣的小说:

  输入二个当然数n,求小于等于n的素数之和

样例输入

2

样例输出

2

多少规模和约定

  测试样例有限支持 二 <= n <= 2,000,000

 

小编注释:水平有限,此题某个不知道该如何是好——n很大时结果有误,由以前面八个测试点总是可是。

 1 #include<stdio.h>
 2 #include<math.h>
 3 int IsPrime(int n){
 4         int k=sqrt(n+1);
 5         for(int i=2;i<=k;i++){
 6             if(n%i==0){
 7                 return 0;
 8             }
 9         }
10         return 1;
11 }
12 int main(){
13     int n,sum=0;
14     scanf("%d",&n);
15     for(int i=2;i<=n;i++){
16         if(IsPrime(i)){
17             sum+=i;
18         }
19     }
20     printf("%d",sum);
21 }

 

留下评论

网站地图xml地图