题目描述:
输入两个正整数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分
3 人评分
#include "stdio.h" int isprime(int x) { int i; if(x==1)return(0); else if(x==2)return(1); else for(i=2;i<x;i++) { if(x%i==0)return(0); else return(1); } } void main() { int n,m,i,k=0; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) if(isprime(i)==1)k+=i; printf("%d",k); } 求教为什么答案半错啊?
不容易系列 (C语言代码)浏览:846 |
C语言训练-求车速 (C语言代码)浏览:1064 |
采药 (C++代码)浏览:1231 |
C语言程序设计教程(第三版)课后习题6.2 (C++代码)为什么回车不算字符浏览:1174 |
人民币问题 (C语言代码)浏览:647 |
剔除相关数 (C语言代码)浏览:1791 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:799 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:531 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1005 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:502 |