学完今天的C语言课程,一习题如下:
用埃拉托色尼筛网法(Sieve of Erastosthenes)来产生质数
埃拉托色尼筛网法(Sieve of Erastosthenes)的聚体步骤:
1,定义整数数组P,将所有的数组元素设置为0;
2,设置变量i等于2
3,如果i>n,算法结束.
4,如果Pi等于0,那么i是一个质数.
5,对于所有的正整数j,如果i*j<=n,将数组元素Pi*j设置为1.
6,将i的值增加1,回到第3步.
请哪位高手解释一下每个步骤的含义呀..还有中间的的n是代表什么呀.不一定要帮我写出程序出来,但希望各位高手帮我分析一下这些步骤的意思.谢谢了
----------------解决方案--------------------------------------------------------
对于所有的正整数j,如果i*j<=n,将数组元素Pi*j设置为1.
我也不清楚啊,那当j>n时怎么办啊.
那就跟本就不行啊
----------------解决方案--------------------------------------------------------
有没有哪位高手来解释一下.小弟很感谢呀..急急.
----------------解决方案--------------------------------------------------------
兄弟你的书名字叫什么,有可能跟我学的一样。
----------------解决方案--------------------------------------------------------
没人知道吗?各位达人帮帮忙呀..
看的是一个美国人的编的C语言编程.第三版
----------------解决方案--------------------------------------------------------
是不是[美]Stephen G.Kochan著 张小潘译 Programming in C 一本全面的C语言入门教程
这题我做过了,等下给你程序。
----------------解决方案--------------------------------------------------------
有哪位达人知道呀..不一定要程序呀..
只想讲解一下..
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int i,j,n,P[10];
n=10;
for(i=0;i<n;++i)
P[i]=0;
for(i=2;i<n;++i)
{
if(P[i]==0)
printf("%i ",i);
for(j=1;i*j<=n;j++)
P[i*j]=1;
}
getch();
}
你自己好好研究下,就不解释了,睡觉了。
----------------解决方案--------------------------------------------------------