实例说明:
要求确定一个数m是否是质数,可以用已求出的质数对m的整除性来确定。
实例解析
质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数。
如果整数m,如果它不能被小于它的质数整除,则m也是质数。引入质数表primes[],已求得的质数个数为pc.求前n个质数过程可用以下算法描述:
程序代码
#include <stdio.h>
#define N 50
int main(int argc, char *argv[])
{
int primes[N];/*引入质数素*/
int pc,m,k;/*pc质数个数,m测试的数,k能够被整除的数*/
printf("The first %d prime number are: \n",N);
primes[0]=2; /*2是第一个质数*/
pc=1; /*已经有1个质数*/
m=3;/*被测试的数从3开始*/
while(pc<N)
{
/*调整m 使它为下一个质数*/
k=0;
while(primes[k]*primes[k]<=m)
{
if(m%primes[k]==0)
{
/*m是合数*/
m+=2;/*让m取下一个奇数*/
k=1;/*不必用primes[0]=2去测试m,所以k从1开始*/
}
else
{
k++;/*继续用一个质数去测试*/
}
}
primes[pc++]=m;
m+=2;/*除2外,其它质数均是奇数*/
}
/*输出primes[0]到primes[pc-1]*/
for(k=0;k<pc;k++)
{
printf("%4d",primes[k]);
}
printf("\n\n Press any key to quit...\n");
getchar();
}
#include <stdio.h>
#define N 50
int main(int argc, char *argv[])
{
int primes[N];/*引入质数素*/
int pc,m,k;/*pc质数个数,m测试的数,k能够被整除的数*/
printf("The first %d prime number are: \n",N);
primes[0]=2; /*2是第一个质数*/
pc=1; /*已经有1个质数*/
m=3;/*被测试的数从3开始*/
while(pc<N)
{
/*调整m 使它为下一个质数*/
k=0;
while(primes[k]*primes[k]<=m)
{
if(m%primes[k]==0)
{
/*m是合数*/
m+=2;/*让m取下一个奇数*/
k=1;/*不必用primes[0]=2去测试m,所以k从1开始*/
}
else
{
k++;/*继续用一个质数去测试*/
}
}
primes[pc++]=m;
m+=2;/*除2外,其它质数均是奇数*/
}
/*输出primes[0]到primes[pc-1]*/
for(k=0;k<pc;k++)
{
printf("%4d",primes[k]);
}
printf("\n\n Press any key to quit...\n");
getchar();
}