素数和问题,有点小问题,求友友指点一下
#include<stdio.h>//判断101-200之间有多少个素数,并输出所有素数。
int main(){
int i;
int j;
int sum=0;
for(i=101;i<=200;i++){
for(j=101;j<=i;j++){
if(i%j==0){
break;
}
if(i==j){
sum++;
printf("%d是素数",j);
}
}
}
printf("一共有%d个素数",sum);
return 0;
}
本帖最后由 jhq999 于 2023-3-14 19:12 编辑
#include<stdio.h>
//判断101-200之间有多少个素数,并输出所有素数。
int main(){
int i;
int j;
int sum=0;
for(i=101;i<=200;i++){
for(j=2;j<=i;j++){//////////
if(i%j==0){
break;
}
}/////////////
if(i==j){
sum++;
printf("%d是素数",j);
}
}
printf("一共有%d个素数",sum);
return 0;
} jhq999 发表于 2023-3-14 19:10
大神我想问一下为什么改这两个地方,有点不太明白{:5_96:} 啊这啧啧啧 发表于 2023-3-14 19:29
大神我想问一下为什么改这两个地方,有点不太明白
第一个从最小素数开始到它本身,不能被整除的才是素数,你的那个例如102不能被101整除但它不是素数
把 if(i==j){放在for循环外面才能判断是否这个数已经被从2到本身有没有没有被整除退出循环 最好把素数判断写成一个函数,这样程序更清晰。PS 素数的判断有很多优化算法,可以学习扩展一下。 geekac 发表于 2023-3-15 07:53
最好把素数判断写成一个函数,这样程序更清晰。PS 素数的判断有很多优化算法,可以学习扩展一下。
收到
页:
[1]