首页 > 代码库 > 04-3. 统计素数并求和(20)
04-3. 统计素数并求和(20)
时间限制
400 ms
内存限制
32000 kB
代码长度限制
8000 B
判题程序
Standard
作者
张彤彧(浙江大学)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出2个正整数M和N(1<=M<=N<=500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:10 31输出样例:
7 143
我的第一次代码:
#include<stdio.h>int main(){ int M,N,count=0,sum=0,i,j; scanf("%d %d",&M,&N); for(i=M;i<=N;i++){ int isPrime=1; for(j=2;j<i;j++){ if(i%j==0){ isPrime=0; break; } } if(isPrime==1){ count++; sum+=i; } } printf("%d %d",count,sum); return 0; }
运行之后发现4个测试点只有2个正确,后发现,没有把1不是素数进行考虑导致出错,进行改版之后:做一个小变换
if
(M==1)
{M=2;
}
优化方法:
#include<stdio.h>int main(){ int n,i,M,N,sum=0,j=0; scanf("%d %d",&M,&N); if(M==1) {M=2; } for(n=M;n<=N;n++) { for(i=2;i<n;i++) { if(n%i==0) break; } if(i==n) { j++; sum=sum+n; } } printf("%d %d",j,sum); return 0;}
04-3. 统计素数并求和(20)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。