永发信息网

用筛选法求100之内的素数,有一个数组名的问题

答案:3  悬赏:0  手机版
解决时间 2021-03-02 20:08
首先该程序运行结果正确
#include<stdio.h>
#include<math.h>
int main(){
int i,j,n,a[100];
for (i=0;i<100;i++)a[i]=i+1;
a[0]=0;
for (i=1;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)(问题在这里,数组a[j]为什么可以有a[100],最大不应该是a[99]吗?)
{if (a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
printf("\n");
for(i=1,n=0;i<=100;i++)
if(a[i]!=0)printf("%d\t",a[i]);n++;
printf("\n");
return 0;
}
最佳答案
不知这个程序清单您是从哪里看来的?
您说的这一个问题,显然是原程序的笔误了。或者原来定义就该定成a[101],或者这里的<=100应该改成<100,否则,数组超界了。

另外,这个程序编的相当糟糕,名为“筛法”,实际上“筛法”的优点全都没有体现。程序结构中大量“多此一举”的操作。
筛法的主要优点是不需要反复顺序一个一个挨着判断,而这里的循环是j++,依然是每次加1,挨着判断;
筛法的另一个优点是不需要做除法,而这里依然是挨着做除法。
本来,求一个数的“倍数”,只需要做乘法,甚至乘法也不必要,依次做加法即可。但这里却将所有的数都挨个用“尝试法”来除一除,看是不是它的倍数,用一句虽然难听但却切中要害的话来评价:“脱裤子放屁多此一举”。

如此,在“筛法”中添加了大量“多此一举”的操作后,其效率丝毫不比最笨的“尝试法”高,还有什么意义呢?

我把这一段程序改一下您看如何:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,a[101];
for (i=2;i<=100;i++)a[i]=1;
for (i=2;i<sqrt(100);i++)
if(a[i]) for(j=i+i;j<=100;j+=i) a[j]=0;

for(i=2;i<=100;i++)
if(a[i]) printf("%d\t",i);
printf("\n");
return 0;
}
全部回答
a[100]里面有101个数 a[0]~a[100] 而不是100个数
不知这个程序清单您是从哪里看来的?
您说的这一个问题,显然是原程序的笔误了。或者原来定义就该定成a[101],或者这里的<=100应该改成<100,否则,数组超界了。

另外,这个程序编的相当糟糕,名为“筛法”,实际上“筛法”的优点全都没有体现。程序结构中大量“多此一举”的操作。
筛法的主要优点是不需要反复顺序一个一个挨着判断,而这里的循环是j++,依然是每次加1,挨着判断;
筛法的另一个优点是不需要做除法,而这里依然是挨着做除法。
本来,求一个数的“倍数”,只需要做乘法,甚至乘法也不必要,依次做加法即可。但这里却将所有的数都挨个用“尝试法”来除一除,看是不是它的倍数,用一句虽然难听但却切中要害的话来评价:“脱裤子放屁多此一举”。

如此,在“筛法”中添加了大量“多此一举”的操作后,其效率丝毫不比最笨的“尝试法”高,还有什么意义呢?

我把这一段程序改一下您看如何:
#include<stdio.h>
#include<math.h>
int main()
{
 int i,j,a[101];
 for (i=2;i<=100;i++)a[i]=1; 
 for (i=2;i<sqrt(100);i++)
 if(a[i]) for(j=i+i;j<=100;j+=i) a[j]=0; 
 
 for(i=2;i<=100;i++)
 if(a[i]) printf("%d\t",i);
 printf("\n");
 return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列有关水在生物实验中作用的叙述,正确的是
1.57乘8分之3加8分之5乘157%简算
我的梦想是当一名歌手
今天我的QQ空间突然能看到我的一个QQ群全部成
怎么做一碗好吃的瘦肉汤面?
西安公安局招聘消防协警待遇如何?有前途吗?协
我想找一本主角在家族受人排挤,但主角实力很
驾驶证一次性扣掉12分怎么办
蓝帆股票 为什么停盘
【多长时间】一年有多长时间
除了韩愈的方法,还有哪种方法可以装满书房
生命时报1053期
戴梦得钻石地址有知道的么?有点事想过去
请问,杂样建车队,
大学生如何让自己心智更加成熟
推荐资讯
已知a+b=2,ab=1.求a²+b²、(a-b)
空调压机卡缸怎么办?
矶钓竿用什么浮漂
野生石蛙晚上一般会在多少温度出来活动?
如何删除在百度贴吧和百度知道留下的邮箱?
狮子座男喜欢什么礼物
新世界二工厂地址在哪,我要去那里办事
养老田在哪里啊,我有事要去这个地方
同乐井地址在什么地方,想过去办事
乐凯撒比萨佳兆业中心店我想知道这个在什么地
天艺美发用品地址在哪,我要去那里办事
绿园安居小区燃气卡丢失到哪里补办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?