小素数
- 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
- 参考《密码工程》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;
}