注册 登录
编程论坛 数据结构与算法

acm代码库,关于素数表。

发布于 2010-06-26 22:38, 1573 次点击
根据代码,我自己又写了一个,acm原本的代码里将n与2、3、5、7比较,这样是不是繁琐了?
我的代码是这样的,只要确定素数表中第一个数为2即可,欢迎各位指教:
#include <stdio.h>

void primelist(int *prime,int *k)
{
    int j;
    int n;
    (*k)=0;
    prime[(*k)++]=2;
    for(n=3; n<=5000; n++)
    {
        for(j=0; prime[j]*prime[j]<=n; j++)
            if(n%prime[j]==0) break;
        if(prime[j]*prime[j]>n) prime[(*k)++]=n;
    }
}

int main()
{
    int i,k,prime[1000];
    primelist(prime,&k);
    for(i=0; i<k; i++)
    {
        printf("%4d   ",prime[i]);
        if((i+1)%9==0) printf("\n");
    }
    return 0;
}
2 回复
#2
2010-06-27 19:31
自己给自己顶一个
#3
creativewang2011-01-23 19:45
的确,只需和已生成素数表中不大于SQRT[X]的比较即可
1