//判断一个偶数是哪两个素数之和
#include
#include
#include
int judgement(int k);
int main(void)
{
int INPUT, add1, add2, result;
add1 = 2;
printf("Please enter an even number bigger than 6:\n");
scanf("%d", &INPUT);
while (add1 < INPUT) {
add1 = judgement(add1); //用judgement函数自小到大依次获取add1
for (add2 = 2; add2 < INPUT; add2 = judgement(add2)) { //用judgement函数自小到大依次获取add2
result = add1 + add2;
if (result == INPUT) {
printf("%d=%d+%d", INPUT, add1, add2);
goto end;
}
}
}
printf("%d=1+%d", INPUT,INPUT-1);
end:system("pause");
return 0;
}
int judgement(int k) //judgement函数
{
int rest, i;
rest = 1;
next:for (i = 2; rest != 0 ; i++)
rest = k%i;
if (i == k)
return k;
else {
k++;
goto next;
}
}
代码没有条理,再者尽量不要用goto语句,使用break,和continue一般就可以控制循环了
程序思路:
遍历每一个比input小的数add1(for循环),如果这个数是素数,判断input-add1是否是素数,是的话就找到了;继续找下一对
int add1=2,add2=2,input,result;
for(add1 = 2; add1 < input; add1++){
//是素数
if(judgement(add1)){
//判断input - add1 是否是素数
if(judgement(input - add1)){
printf("%d + %d = %d",add1,input - add1,input);
}
}
}
int judgement(int k) //judgement函数
{
int i = 2;
for(i = 2; i <= k/2; i++){
if(k % i == 0){
//不是素数
return 0;
}
}
return 1;
}
循环结束不对,请重新设置循环结束条件
#include<stdio.h>
int f(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i,a,b,num;
for(num=4;num<101;num+=2)
{
for(i=1;i<=num/2;i++)
{
a=i;b=num-i;
if(f(a)==1&&f(b)==1)
printf("%d可以为%d,%d 组成.\n",num,a,b);
}
}
}