#include<stdio.h> int isprime(int x) { int i; if(x<2) return 0; for(i=2;i<x;i++) if(x%i==0) return 0; return 1; } int main(void) { int m,n,i,sum=0; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { if(isprime(i)) sum+=i; } printf("%d",sum); return 0; }
解题思路:
注意事项:
参考代码:
0.0分
6 人评分
效率不高,判断素数就是指需要循环到根号x就行了,注意要带等号,小于根号x的时候就不是素数了,大于根号x的时候还可能是吗,x的两个因子,肯定是一个大于等于根号x,一个小于等于根号x
#include<stdio.h> int isprime(int x) { if(x<2)return 0; int i; for(i=2;i<x;i+=2) if(x%i==0) return 0; return 1; } int main() { int m,n; scanf("%d%d",&m,&n); int i,s=0; for(i=m;i<=n;i++) { if(isprime(i)) s+=i; } printf("%d",s); return 0; } 有人能看看我这个哪错了
zxzd 2018-11-04 09:17:54 |
if(isprime(i)) s+=i;改为:if(isprime(i)==1)s+=i;
#include<stdio.h> #include<stdlib.h> int main() { int isprime(int a,int b); int m,n; scanf("%d%d",&m,&n); isprime(m,n); return 0; } int isprime(int a,int b) { int i,j=0,sum=0,k; for(i=a;i<=b;i++) { for(k=1;k<=b;k++) { if(i%k==0) j+=1; } if(j<=2) sum+=i; j=0; } printf("%d",sum); return 0; } 大神能帮我看看错哪了嘛!
c晨光 2018-11-26 17:35:05 |
定义的函数在主函数下面是要在前面声明定义的函数的,如果把自己定义的函数放在主函数的上面,就不用声明,你直接把自己定义的那一部分函数,所有的都移到main函数的上面就可以了
请教一下为什么下面的程序达不到目标,需要怎么修改 #include <stdio.h> int isprime(int m,int n) { int i,j=0,x,sum=0; for(x=m;x<=n;x++) { for(i=2;i<x;i++) { if(x%i==0) j=1; } if(j==0) sum=sum+x; } return sum; } int main() { int m,n,sum; scanf("%d %d",&m,&n); sum=isprime(m,n); printf("%d\n",sum); getchar(); getchar(); return 0; }
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:878 |
C语言训练-斐波纳契数列 (C语言代码)浏览:1270 |
ASCII帮了大忙浏览:797 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:562 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:658 |
蚂蚁感冒 (C语言代码)浏览:1408 |
【偶数求和】 (C语言代码)浏览:460 |
蚂蚁感冒 (C语言代码)浏览:816 |
1051(奇了怪了)浏览:747 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:571 |
海洋之心 2018-11-30 23:58:42 |
对的,当时写的时候没有考虑周全,现在回头看,确实是这样的