题目:求1~1000的质数(素数)
思路:素数、即质数,是在大于1的整数中只能被1和其自身整除的数。检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数。
代码:
#include <stdio.h>
#include <math.h>
#define MAXSIZE 1000
int main()
{
int prime[500];
int size = 0;
int index = 0;
int isGet = 0;
int sqrt_value = 0;
int prime_index = 0;
printf("1~1000的素数: ");
prime[0] = 2;
prime[1] = 3;
size = 2;
index = 4;
for(;index < MAXSIZE;index ++)
{
sqrt_value = sqrt(index);
prime_index = 0;
isGet = 1;
while((prime_index < size)&& (prime[prime_index] <= sqrt_value))
{
if(index % prime[prime_index] == 0)
{
isGet = 0;
break;
}
prime_index ++;
}
if(isGet == 1)
{
prime[size] = index;
size ++;
}
}
for(prime_index = 0;prime_index < size;prime_index++)
{
printf("%d ",prime[prime_index]);
}
printf("\n共%d个.\n",size);
return 0;
}