以下是引用shixiaochi在2012-1-16 05:57:39的发言:
#include"stdio.h" //这种形式是老的c格式 还是?-------声明库函数头文件,要使用非自定义函数的时候,就得告诉编译器,我用他了-------
//-------------如果你不声明,编译器就认为你使用的是一个变量,而且还没定义。
int main(){ //这是c的代码书写格式吗?新手零基础高接触c两个礼拜 请见谅---c程序都是从main()函数开头的。
int sz[1000];
sz[0]=0; //数组首项赋值 0--算法就是就是将数组下标为质数置1,其他数置0,具体操作就是,讲从下标2开始,到998结束,
sz[1]=0;
int i,l=2;
for( i=2;i<=998;i++) //除去第一第二个元素外 其余赋值1
{
sz=1;
}
for(i=2;i<=998;i++)
{
if(sz) //从第三个元素开始如果值为非0则继续
{
for(int k=2;k<=998;k=i*(l++)) //索引为k是能够被从2开始整除的数并赋值0
{
sz[k]=0; // 把能整除的全部赋值为0,分离出了素数
}
}
}
for(i=0;i<=998;i++)
{
if(sz) //依次取出索引为1的数,也就是素数
printf("%d\t",i);
}
}
改了一下,之前那个是求1到998之间的质数,改了之后是求1000以内的质数#include"stdio.h" //这种形式是老的c格式 还是?-------声明库函数头文件,要使用非自定义函数的时候,就得告诉编译器,我用他了-------
//-------------如果你不声明,编译器就认为你使用的是一个变量,而且还没定义。
int main(){ //这是c的代码书写格式吗?新手零基础高接触c两个礼拜 请见谅---c程序都是从main()函数开头的。
int sz[1000];
sz[0]=0; //数组首项赋值 0--算法就是就是将数组下标为质数置1,其他数置0,具体操作就是,讲从下标2开始,到998结束,
sz[1]=0;
int i,l=2;
for( i=2;i<=998;i++) //除去第一第二个元素外 其余赋值1
{
sz=1;
}
for(i=2;i<=998;i++)
{
if(sz) //从第三个元素开始如果值为非0则继续
{
for(int k=2;k<=998;k=i*(l++)) //索引为k是能够被从2开始整除的数并赋值0
{
sz[k]=0; // 把能整除的全部赋值为0,分离出了素数
}
}
}
for(i=0;i<=998;i++)
{
if(sz) //依次取出索引为1的数,也就是素数
printf("%d\t",i);
}
}
#include"stdio.h" //这种形式是老的c格式 还是?-------声明库函数头文件,要使用非自定义函数的时候,就得告诉编译器,我用他了-------
//-------------如果你不声明,编译器就认为你使用的是一个变量,而且还没定义。
int main(){ //这是c的代码书写格式吗?新手零基础高接触c两个礼拜 请见谅---c程序都是从main()函数开头的。
int sz[1000];
sz[0]=0; //数组首项赋值 0--算法就是就是将数组下标为质数置1,其他数置0,具体操作就是,讲从下标2开始,
// 到1000结束,把2的倍数,3的倍数,4的倍数........x的倍数<1000的数找出来全部置0,剩下的数
//就是没有什么数是他的倍数了。我是这样理解筛选法的,那么下标为0和1的数组就直接置0就行了,
sz[1]=0;
int i,l=2;
for( i=2;i<=1000;i++) //除去第一第二个元素外 其余赋值1
{
sz=1;
}
for(i=2;i<=1000;i++)
{
if(sz) //从第三个元素开始如果值为非0则继续
{
for(int k=2;k<=1000;k=i*(l++)) //索引为k是能够被从2开始整除的//与某个数的倍数,不过他先从2的倍数开始,用了2个变量i和l,外循环i=2的时候,l从2开始自加,两数之积,为2*2,2*3,2*4.....到1000以内,2的所有倍数,当外循环i自加到3,那么3*2,3*3,3*4.....到1000以内,所有3的倍数..接着是4的所有倍数,5的所有倍数....貌似算法还有改进的地方,待会儿看看,
{
sz[k]=0; // 把能整除的全部赋值为0,分离出了素数,把下标是非素数的值全部置0,那么剩下下标为1的就是素数了
}
}
}
for(i=2;i<=1000;i++)
{
if(sz) //依次取出索引为1的数,也就是素数
printf("%d\t",i);
}
}
认为事物非黑即白是缺智慧的表现……