
有点麻烦请多关照谢谢
#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
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;
j
/*如握埋果有整数可以整除,则q+1,表示至少有一个数能够整除*/
if
(a
%
j
==
0){
q++;
break;
}
/*如果没有数可以整除段核蚂,说明是质数,返回1*/
if
(q
==
0)
return
1;
/*反之,返回0*/
else
return
0;
}
。。。。
写过一次了,不想再写了
到知道里找找吧