得分:15
回复 楼主 Aamir
按照你的要求循环输入,当输入0时退出,然后你的77表达应该有多种形式,下面是程序代码
#include
#include
void main()
{
unsigned int a=1,c=1;
int isprime(int b);
unsigned int eve[3]={0};
unsigned int odd[4]={0};
void spilt_eve(unsigned int array[]);
void spilt_odd(unsigned int array[]);
/*input number*/
for(;a!=0;)
{
printf("Please input a number.(0 ~ 65535)\n");
scanf("%d",&a);
if((a%2==0)&&(a<6))
{
printf("if the number is even number, please make sure that it is beyond 6.\n");
continue;
}
else if((a%2!=0)&&(a<9))
{
printf("if the number is odd number, please make sure that it's beyond 9.\n");
continue;
}
/*distinguish number and put the equotion out.*/
if(a%2==0)
{
eve[0]=a;
spilt_eve(eve);
}
else
{
odd[0]=a;
spilt_odd(odd);
}
}
}
/*make sure the number is prime or not.*/
int isprime(int x)
{
int i,y=1;
for(i=2;i<=(int)sqrt(x);i++)
{
if(x%i==0)
{
y=0;
break;
}
}
return(y);
}
/*split the even number.*/
void spilt_eve(unsigned int eve[3])
{
int i,m;
i=eve[0];
for(m=3;m<=i/2;m++)
{
if(isprime(m)==1)
{
if((isprime(i-m==1)))
{
eve[1]=m;
eve[2]=i-m;
printf("%d=%d+%d\n",eve[0],eve[1],eve[2]) ;
}
}
}
}
/*split the odd number.*/
void spilt_odd(unsigned int odd[4])
{
unsigned int eve[3];
int i,j,k;
i=odd[0];
for(k=3;k<=i/3;k++)
{
if(isprime(k)==1)
{
for(j=k;j<=i/2;j++)
{
if(isprime(j)==1)
{
if(isprime(i-k-j)==1&&((i-k-j)>=j))
{
odd[1]=k;
odd[2]=j;
odd[3]=i-k-j;
printf("%d=%d+%d+%d\n",odd[0],odd[1],odd[2],odd[3]);
}
}
}
}
}
}