原题链接:二级C语言-计算素数和
题目描述:
输入两个正整数m和n(m<n),求m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被自身整除的自然数)。
输入
m n
输出
素数和
样例输入
2 3
样例输出
5
解题思路:
本题要求定义并调用isprime(x)。可能有部分朋友上来直接写isPrime函数有点小难度,那么我采用的方法是先"一气呵成"两个for循环,判断如果是素数,累加就行,不是素数跳出循环。然后把里面的实现代码封装成isprime(x)函数即可!
对于算法如果不是太理解,可以看看下面这篇文章,都是相同的算法,讲解的比较详细!
https://blog.dotcpp.com/a/56754
注意事项:
下面两种都可以成功通过见面测试! 感兴趣的可以参考下!
参考代码(直接法):
#include <stdio.h> int main() { int m,n,sum=0; scanf("%d%d",&m,&n); for(int i=m; i<=n; i++) { for(int j=2; j<=i; j++) //j是被除数,j取2~i之间,如果都不能整除,则i是素数 { if(i%j==0&&i!=j) break; //不是素数,跳出 else if(i%j==0&&i==j) sum+=i; //是素数,累加 } } printf("%d",sum); }
方法二:(isPrime函数)
#include <stdio.h> int isPrime(int m,int n); //声明isPrime()函数 int main() { int m,n; scanf("%d%d",&m,&n); printf("%d",isPrime(m,n)); } int isPrime(int m,int n) //实现isPrime()函数 { int sum=0; for(int i=m; i<=n; i++) { for(int j=2; j<=i; j++) { if(i%j==0&&i!=j) break; if(i%j==0&&i==j) { sum+=i; } } } return sum; }
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复