小素数

  1. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
  2. 参考《密码工程》p107伪代码基于Eratosthenes算法实现 int SmallPrimeList(int n, int *plist, int *len), 其中plist返回素数列表,len返回列表长度(10
    ’)
    2 写出测试代码,至少包括 n=2, n=你的四位学号,n>2^20次方的测试代码,提交代码和运行结果截图(5)

测试结果

n=2

n=4位学号

n>2^20次方

实验代码

int main()
{
 long long int n;
 long long int len = 0;
 printf("input number1:");
    scanf("%lld",&n); 
    assert(n>=2);
    assert(n<=1048576);
    int a[n+1];
    for (int i = 0;i <= n;i++)
    {
        a[i] = i;
    }


    for (int i = 2;i*i <= n;)
    {
        for (int j = i;j <= n;j++)
        {
            while(0 == a[j] && j <= n)
                {
                    j++;
                }
            if (0 == a[j]%i && i != a[j])
            {
                a[j] = 0;
            }
        }
        if((i-1)%6 == 0)
            i += 4;
        else if((i-5)%6 == 0)
        {
            i += 2;
        }
        else
        {
            i++;
        }
    }
    for(int i = 2;i <= n;i++)
    {
        if (a[i] != 0)
        {
            cout<<a[i]<<" ";
            len=len+1;
        }
    }
    printf("\n");
    printf("len=%lld",len);
    return 1;
}
posted @ 2022-06-09 14:43  爱冒险的丁丁  阅读(31)  评论(0编辑  收藏  举报