中易网

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

答案:3  悬赏:80  
解决时间 2021-01-15 05:21
  • 提问者网友:蔚蓝的太阳
  • 2021-01-14 09:19
如何在C语言中将6至50之间全部偶数表示为两个素数之和。求具体代码
最佳答案
  • 二级知识专家网友:山有枢
  • 2021-01-14 09:41
#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
",i,j,i-j);
                break;
            }
    return 0;
}
全部回答
  • 1楼网友:封刀令
  • 2021-01-14 11:57
这个自己编呀,别人写的有什么用?做几个循环嵌套就完了。
  • 2楼网友:话散在刀尖上
  • 2021-01-14 11:05
#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(" %2d=%2d+%2d",i,prime[j],prime[k]);
}
}
}
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息