C语言(怎么样用筛选法求100-200的素数呀

C语言(怎么样用筛选法求100-200的素数呀
越详细越好,要有时间给我把每下一步干什么的也写出就更好了,我是初学者
有点麻烦请多关照谢谢
#include

/*一个判定是否闹让为素数的函数*/悉雹
int isprime (int a);

int main()
{
/*循环变量,申明为register是为了提高效率*/
register int i;

for (i=100; i<=200; i++)
/*如果是质数则输出*/
if (isprime (i))
printf("%d ", i);

return 0;

}

int isprime (int a)
{
register int j;
int q = 0;

/*筛选从2-a-1,看是否有数能够整除a*/
for (j=2; j/*如果有整数可以整除,则q+1,表示至少有一个数能够整除*/
if (a % j == 0){
q++;
break;
}

/*如睁弯帆果没有数可以整除,说明是质数,返回1*/
if (q == 0)
return 1;
/*反之,返回0*/
else
return 0;

}
楼上那个哪里是筛选法。。。
整体思路就是从2开宏基悉始,锋迟把蔽乎素数的倍数全部筛去。
#include

#define Size 201

int main( )
{
int i, j;
int isprime[ Size ];
for ( i = 2; i < Size; i++ )
isprime[ i ] = 0;
for ( i = 2; i < Size; i++ )
{
if ( isprime[ i ] == 0 )
{
for ( j = i * 2; j < Size; j += i )
isprime[ j ] = 1;
}
}
for ( i = 100; i < Size; i++ )
if ( isprime[ i ] == 0 )
printf("%d ", i);
return 0;
}

把3~200之间的素数全选出来,最后只输出大于100的,这样好做。举例如下:

//#include "stdafx.h"//If the vc++6.0, 亏芦with this line.
#include "stdio.h"
int main(void){
    int a[100],i,j;
    for(j=3,i=0;i<100;a[i++]=j++,j++);
    for(i=0;a[i]*a[i]        if(a[i])
            for(j=i+1;j<100;j++)
                if(a[j]%a[i]==0)
    销虚带                a[j]=0;
    for(i=0;i<99;i++)
     誉橡   if(a[i]>100) printf("%d ",a[i]);
    printf(" ");
    return 0;
}

#include

/*一个判定是否为素数的函数*/
int
isprime
(int
a);
int
main()
{
/*循氏旦环变量,申明为register是为了提高效率*/
register
int
i;
for
(i=100;
i<=200;
i++)
/*如果是质数则输出*/
if
(isprime
(i))
printf("%d
",
i);
return
0;
}
int
isprime
(int
a)
{
register
int
j;
int
q
=
0;
/*筛选从2-a-1,看是否有数能够整除a*/
for
(j=2;
jj++)
/*如握埋果有整数可以整除,则q+1,表示至少有一个数能够整除*/
if
(a
%
j
==
0){
q++;
break;
}
/*如果没有数可以整除段核蚂,说明是质数,返回1*/
if
(q
==
0)
return
1;
/*反之,返回0*/
else
return
0;
}
。。。。
写过一次了,不想再写了
到知道里找找吧
← 上一篇: 下一篇: →