我此函数可以通过运用 bool 类型来生成一个 素数表。
素数:也叫质数,只有1和它本身两个因数的数。ps:1不是素数。
在此献上代码:
#include<stdio.h>
#include<stdbool.h>
bool num[1000010];
void Sushu()
{
int i, j;
for (i = 2; i <= 1000; i++)
{
for (j = 2; i * j <= 1000010; j++) //意思为:i*j这个数 可以有不是1和它本身的因数
{ //故,此数为非素数。
num[i * j] = 1; //用1标记 非素数
}
}
}
补充一下主函数,来输出这个素数表:
#include<stdio.h>
#include<stdbool.h>
bool num[1000010];
void Sushu()
{
int i, j;
for (i = 2; i <= 1000; i++)
{
for (j = 2; i * j <= 1000010; j++)
{
num[i * j] = 1; //不是素数为1。
}
}
}
int main()
{
int n;
Sushu();
scanf("%d", &n);
for (int i = 2; i <= n; i++)
{
if (num[i] == 0) //在这个bool类型数组里,0表示素数。
{
printf("%d ", i);
}
}
return 0;
}
运行结果:(这里我们输出 <= 1000 的素数)
这个函数适合初学者,进行对大量素数的输出。