今天在论坛上看到有人询问求质数的方法,想了想,正常的方法大家都会,一般都是取模的方式,
如果要求输出N以内的质数,如果N很大话,就可以看出来很费时了。所以我就想到了如下的方法,
速度要快很多. 使用数组索引来做的,将索引和数相对应
#include<stdio.h>
#define NUM 100
int main()
{
int i,j;
int prime[NUM] ;
for(i = 1; i<=NUM; i++) //将数组所有值赋为1
prime[i] = 1;
for(i = 2; i<=NUM; i++)
for(j = i; j<= NUM / i; j++)
if(i > 1 && j > 1 && prime[i*j]==1) //将索引不是质数的赋为0
prime[i*j] = 0;
for(i=0; i<NUM; i++) // 打印出1-NUM中的所有质数
if(prime[i]==1)
printf("%d ", i);
}