看到一道题
求100之内的素数
动手尝试后查阅相关资料看到一篇文章:求质数算法的N种境界-试除法和初级筛法
原文链接(需科学上网)
受到一些启发 遂动手修改了程序如下,基本实现了两种功能,进一步的代码优化欢迎各位大佬交流!
#include<stdio.h>
#include<math.h>
#define N 15000
int main()
{
int a, i, j, k, num, sum = 0;
printf("Q1:要求多少以内的素数?\nQ2:要多少个素数?\n");
printf("Q1请输入1,Q2请输入2\n请输入:");
scanf_s("%d",&a);
if (a == 1)
{
printf("请输入数字:");
scanf_s("%d",&num);
for (i = 2; i <= num; i++)
{
k = sqrt(i);
for (j = 2; j <= k; j += 1)
{
if (i % j == 0)
{
break;
}
}
if (j > k)
{
printf("%d\t", i);
sum++;
if (sum % 10 == 0)
{
printf("\n");
}
}
}
printf("\n%d内一共有%d个素数", num, sum);
}
if (a == 2)
{
printf("请输入数字:");
scanf_s("%d", &num);
for (i = 2; i <= N; i++)
{
k = sqrt(i);
for (j = 2; j <= k; j += 1)
{
if (i % j == 0)
{
break;
}
}
if (j > k)
{
printf("%d\t", i);
sum++;
if (sum % 10 == 0)
{
printf("\n");
}
if (sum == num)
{
break;
}
}
}
}
return 0;
}
}