C程序 1+1猜想:找出和数为x(x为合数,x>3)的两个素数。写出程序。

来源:百度知道 编辑:UC知道 时间:2024/05/25 04:50:19
这是我的代码,不知道哪里错了,急啊!(在线等······)
#include<stdio.h>
#include<math.h>
void main()
{
int i,a,m,flag;
printf("input a even mumber not less than 3:");
scanf("%d",&i);
while(i<3)
{
printf("input it again:");
scanf("%d",&i);
}
for(a=2;a<=i/2;a++)
{
for(m=2;m<=sqrt(a);m++)
{ if(a%m==0)
flag=0;
else
flag=1;
}
if(flag==1)
printf("%d+%d=%d\n",a,i-a,i);
}
}
flag没必要初始化吧

1、flag没有初始化,flag=1;
2、a和i-a都要判断,最好用子函数,否则要用两个for循环
#include <stdio.h>
bool isPrime(int);
void main()
{
int i,j;
do
{
printf("Input a number(>=3):");
scanf("%d",&i);
}while(i<3);
for(j=2;j<=i/2;j++)
if(isPrime(j) && isPrime(i-j))
printf("%d+%d=%d\n",j,i-j,i);
}

bool isPrime(int x)
{
int i;
for(i=2;i<x/2;i++)
if(x%i==0)
return false;
return true;
}

//---------------------------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
int i,a,b,m,flag; /*注意这里*/
printf("input a even mumber not less than 3:");
scanf("%d",&i);
while(i<3)
{
printf("input it again:");
scanf("%d",&i);
}
for(a=2;a<i-1;a++)
{flag=1;