解题思路:
假如i是素数,则i不能整除2~i之间的所有数,定义一个变量j,取 2~i之间所有值。如果中间的数都不能除尽, 那么一起循环到最后一次j变成i时,i%j==i%i==0 这个时候i==j ,i就一定是素数。如果在j=0~i的循环中途 就出现i%j==0,说明i一定不是素数.
参考代码:
#include <stdio.h> int main() { int N,i,j; scanf("%d",&N); for(i=2; i<=N; i++) //遍历2~N之间的所有数 { for(j=2; j<=i; j++) //j相当于0~i之间的所有数,i%如果除0~i之间的所有数都都不能除尽,那么i是素数。 { //i%j==0说明i能整除j 当i和j相等时,那么i%j必须为0 if(i%j==0&&i!=j) //如果j不是在最后一个i=j的情况下i%j==0,说明在j在取0~i的某个值时,i能将其整除,因此i肯定不是素数。 break; if(i%j==0&&i==j) //说明i%(0~i之间)都不能除尽,只有最后i==j的情况下才能除尽,此时已经把所有数都判断完了,i是素数 printf("%d\n",i); } } return 0; }
0.0分
8 人评分
int n,i,j; bool flag=1; scanf("%d",&n); for(i=2;i<=n;i++){ for(j=2;j<=i/2;j++){ if(i%j==0){ flag=0; break; } } if(flag) printf("%d\n",i); flag=1; } 为什么编译错误
#include <stdio.h> int main() { int N,i,a,b; scanf("%d",&N); for(i=1;i<N;i++) { for(a=2;a<i;a++) { if(i%a==0) { b++; } } if(b==0) { printf("%d\n",i); } b=0; } return 0; } 请问为什么答案错误?
#include<stdio.h> int main() { int i,n,j; scanf("%d", &n); for(i=2;i<=n;i++) { for(j=2;j<=i;j++) { if(i%j==0) { if(j==i) printf("%d\n",i); break; } } } return 0; }
#include<stdio.h> int main() { int N,i=2,x=2; scanf("%d",&N); while(x!=N) { for(i=2;i<x;i++) { if(x%i==0) break; } if(i==x) printf("%d\n",x); x++; } return 0; }
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:807 |
C二级辅导-同因查找 (C语言代码)浏览:705 |
字符串问题 (C语言代码)浏览:1634 |
最长单词 (C语言代码)浏览:1474 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:793 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:910 |
DNA (C语言描述,数据结构)浏览:909 |
三角形 (C++代码)递推浏览:825 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:570 |