小素数
#include <stdio.h>
#define MAXNUM 500000 //求1000以内的所有素数
int x(int a)
{
int b=0;
int i;
for(i=0;;i++)
{
if(a!=0)
{
a=a/2;
b++;
}
else
break;
}
return b;
}
int main(int n, int *plist, int *len)// 其中plist返回素数列表,len返回列表长度
{
int i, j;
int plist[MAXNUM+1];//定义一个数组用来保存素数
for (i=2;i<=MAXNUM;i++)
{
plist[i] = 1;
}
for (i=2;i*i<=MAXNUM;i++)//循环处理前i个
{
if (plist[i]==1)//若为素数,则进行筛选
{
for (j=2*i; j<=MAXNUM; j++)
{
if (plist[j]==0)//去掉合数
{
continue;
}
if (j%i==0)//若不是素数,则是合数,将素数的标志更改为0
{
plist[j]=0;
}
}
}
}
printf("请输入你想要的bit数:");
int m;
scanf("%d",&m);
for (i=2;i< MAXNUM;i++)//输出素数的值和个数
{
if (plist[i]==1&&n==x(i))
{
printf("%10d",i);
len++;
if (len%10 == 0) printf("\n");
}
}
printf("素数个数len=%d",len);
return 0;
}
int main()
{
int n;
printf("请输入生成素数的上限:\n");
scanf("%d",&n);
SmallPrimeList(int n, int *plist, int *len);
}