永发信息网

c语言 10000以内的质数

答案:4  悬赏:70  手机版
解决时间 2021-05-07 09:59

输出10000万以内的所有素数(也称质数),要求每行输出一个素数

我自己写的这样的

#include<stdio.h>
void main()
{
int a,b;
for(a=2;a<=10000;a++)
{
for(b=1;b<=2/a;b++)
{
if(a%b==0) break;
}
if (a%b!=0) printf("%d\n",a);
printf("\n");
}
}

哪里有问题啊??

最佳答案

告诉你吧,,


错误:for(b=1;b<=2/a;b++) 应该改成 for(b=1;b<=a/2;b++)



首先你的程序算法就是有问题,判断素数的方法是这样:一个数除了能被1和它本身整除之外,不能被其他的数整除。。。



所以程序可以这样写:



#include <stdio.h>
#include <math.h> //调用C中库函数的头文件
void main()
{
int i,m,n,count=0;
for(m=2;m<=10000;m++)
{n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0) break;
if(i>n)
{printf("%6d",m);
count++;
if(count%10==0) printf("\n"); //当一行满10个的时候就换行
}
}
printf("\n");
}



由于每行输出一个不好看结果,,我就调成了每行输出10个






全部回答
其实,你最多只有遍历到sqrt(a)就可以 了。。。 另外,你也可以利用质数表来完成,分别将某数的倍数从表中删除,表中剩下的,即是质数。
for(b=1;b<=a/2;b++)
帮你修改如下 #include<stdio.h> void main() { int a,b; for(a=1;a<=10000;a++) { for(b=2;b<a;b++) { if(a%b==0) break; } if (a==b) printf("%d ",a); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
傻子跟呆子的区别是什么?
怎么设置QQ密保?
大海饰品在什么地方啊,我要过去处理事情
大顺怎么去啊,有知道地址的么
阳春边处有也玩
诛仙2 09年10月19日维护后是所有抽奖的都下架
qq空间怎么整啊?
适用于QQ对战平台中的红色警戒在哪有下载?
甩蛋什么意思
古惑仔中的陈浩楠对感情是个什么样的人?
怎么才能不对网络游戏着迷???
怎样才能确定Ta是不是真心喜欢你的?
冰棒在北京叫什么
为什么我的飞车只能买100点券的东西
上林县乔贤镇怎么去啊,有知道地址的么
推荐资讯
华硕1008HA
为什么会心疼?回答对了的有奖励
尿道口肿,好不舒服......
锐捷的端口隔离怎么做
东风风神哪里产的,东风风行产地在哪里
谁邀请我腾讯微博
谁给个下小说全本的网站 谢了
武汉大学-六区2栋地址在什么地方,想过去办事
大学经济管理学有什么内容?
国家电网佳木斯同江电业局地址在哪,我要去那
2009年11月7号晚上8点胶南频道放的电影叫什么
我是农历1988,7,22出生,公历9月2号…请问
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?