输入100以内的质数用html,看一下这个程序(求100以内的质数),怎么简化一下算法...

简化寻找质数的算法

1。跳过一些数。如偶数。另外对于摸6同余的数(表示为6n,6n+1,6n+2,6n+3,6n+4,6n+5),只需要测试6n+1和6n+5是否为质数,这样问题规模缩小为原来的三分之一

2。只需要用已经找到的质数去测试整除性

#include

#define MAXSIZE 100

#define YES 1

#define NO 0

void main(void)

{

int prime[MAXSIZE]; /* array to contains primes */

int gap = 2; /* increasing gap = 2 and 4 */

int count = 3; /* no。

of primes */

int may_be_prime = 5; /* working variable */

int i, is_prime;

prime[0] = 2; /* Note that 2, 3 and 5 are */

prime[1] = 3; /* primes。

*/

prime[2] = 5;

while (count < MAXSIZE) { /* loop until prime[] full*/

may_be_prime += gap; /* get next number */

gap = 6 - gap; /* switch to next gap */

is_prime = YES; /* suppose it were a prime*/

for (i = 2; prime[i]*prime[i] <= may_be_prime && is_prime; i++)

if (may_be_prime % prime[i] == 0) /* NO */

is_prime = NO; /* exit */

if (is_prime) /* if it IS a prime。

。。

*/

prime[count++] = may_be_prime; /* save it */

}

printf("\nPrime Number Generation Program");

printf("\n===============================\n");

printf("\nFirst %d Prime Numbers are :\n", count);

for (i = 0; i < count; i++) {

if (i % 10 == 0) printf("\n");

printf("%5d", prime[i]);

}

}

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值