- 论坛徽章:
- 0
|
/* 输出指定数字个数的质数 出现的问题是:我输入25后,显示的是Divide error呀?*/
#include "stdio.h"
#include "stdlib.h"
typedef unsigned char bool;
#define true 1
#define false 0
main()
{
unsigned long *primes =NULL;
unsigned long trial = 0;
bool found = false;
size_t total = 0;
size_t count =0;
size_t i;
printf("how many primes world you like - you'll get at least 4? ");
scanf("%u",&total);
total = total < 4U?4U : total;
primes = (unsigned long *) malloc(total*sizeof(unsigned long));
if(primes == NULL)
{
printf("\nnot enough memory. Hasta la vista,baby.\n");
return 1;
}
count = 3U;//这里为什么要将count设置为3U呀
trial = 5U;//为什么设置为5U
while(count<total)
{
trial += 2UL;
for(i = 0;i< count;i++)
if(!(found = (trial % *(primes + i))))//*(primes + i)是什么意思呀?
break;
if(found)
*(primes + count++) = trial;//这句也不明白什么意思。。:em16:
}
for( i = 0;i<total;i++)
{
if(!(i%5U))
printf("\n");
printf("%12lu",*(primes + i));
}
printf("\n");
return 0;
}
[ 本帖最后由 langue 于 2009-5-28 16:32 编辑 ] |
|