1.判断是否是素数
#include <stdbool.h>
#include <math.h>
bool isprime(int n)
{
if(n<=1) return false;
if(n==2) return true;
for(int i=2;i<sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
2.分解质因数
void fun(int n)
{
int i=0,j=0;
if(isprime(n)) //素数直接输出
printf("%d",n);
else
{
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
printf("%d=%d",n,i);
break;
}
}
n=n/i;
for(j=2;j<=n;j++)
{
if(n%j==0)
while(n%j==0)
{
printf("*%d",j);
n=n/j;
}
}
}
}
3.两千以内的所有素数序列为:x1,x2,x3......(从小到大)顺序 求y1,y2,y3(其中y1=x2-x1,
y2=x3-x2....
void fun()
{
int i=0,topa=-1,topb=-1;
int a[2000]={0};
int b[2000]={0};
for(i=2;i<=2000;i++)//1不是素数
{
if(isprime(i))
a[++topa]=i;
}
for(i=0;i<topa;i++)
{
b[++topb]=a[i+1]-a[i];
}
for(i=0;i<=topb;i++)
printf("%4d",b[i]);
}
4.打印前10对孪生素数。若两个素数的差为2,则成为孪生素数。如:(3,5)(11,13)
void fun()
{
int count=0,i=0;
for(i=2;count<10;i++)
{
if(isprime(i)&&isprime(i+2))//当i和i+2均为素数时,为孪生素数
{
printf("(%d,%d)",i,i+2);
count++;
}
}
}