素数表
素数表
原理:合数一定能够拆分成几个素数的乘积,可以利用这个性质列出素数表。
例题:输出0到一个数(输入的数)的素数表。
分析:只要一个数和所有比它小的素数相除,余数都不为0,那么这个数就是素数,利用已求出的素数表判断可以减少判断时间。
代码:
#include<stdio.h>
int num=0,a[10000]={2}; // 使用数组储存已经发现的素数
void panduan(int n);
int main()
{
int count,i;
printf("Input the number:");
scanf("%d",&count);
panduan(count);
for(i=0;i<=num;i++)
{
printf("%4d ",a[i]); //打印素数表
}
return 0;
}
void panduan(int n) //判断是否是素数
{
int i,j,flag=0;
for(i=2;i<=n;i++)
{
for(j=0;j<=num;j++)
{
if(i%a[j]==0)
{
flag=0; //利用标志变量flag来标记该数是否是素数
break; //flag为0,不是素数
}
else
{
flag=1; //flag为1,是素数
}
}
if(flag==1)
{
num=num+1; //把素数储存到数组中
a[num]=i;
flag=0;
}
}
}
结果示例:



浙公网安备 33010602011771号