如何在C语言中将6至50之间全部偶数表示为两个素数之和。求具体代码

2025-04-23 21:44:08
推荐回答(3个)
回答1:

#include 
#include 
#include "math.h"

void CreatePrime(int* prime)  //生成一个50以内的素数数组 
{
int i,j,k=0;
prime[k++]=2;
for(i=3;i<=50;i++)
{
int flag=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
prime[k++]=i;
}
}
}

int main(int argc, char *argv[]) 
{
int i,j,k;
int* prime;
prime=(int*)malloc(sizeof(int)*20); //定义一个数组,存储50内的素数 
memset(prime,0,sizeof(int)*20);
CreatePrime(prime); //生成素数数组 
for(i=6;i<=50;i+=2) //6到50中的偶数,琢个测试 
{
for(j=0;j<20;j++)
{
for(k=0;k<20;k++)
{
if(prime[j]+prime[k]==i)
{
printf("\n%2d=%2d+%2d",i,prime[j],prime[k]);
}
}
}
}
return 0;
}

回答2:

#include 
int prime(int n){
    int i;
    if(n>2 && !(n&1) || n<2)
        return 0;
    for(i=3;i*i<=n;i+=2)
        if(!(n%i))
            return 0;
    return 1;
}
int main(void){
    int i,j;
    for(i=6;i<51;i+=2)
        for(j=2;j            if(prime(j) && prime(i-j)){
                printf("%d == %d + %d\n",i,j,i-j);
                break;
            }
    return 0;
}

回答3:

这个自己编呀,别人写的有什么用?做几个循环嵌套就完了。