目的:4. 编写程序验证哥德巴赫猜想:一个不小于4的偶数,可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7,……。在主函数中输入一个不小于4的偶数n,程序运行后输出以下形式的结果:
若输入34,则程序输出为:
34 = 3+31
34 = 5+29
34 = 11+23
34 = 17+17
问题:程序没有出错,但是没有输出结果
#include
#include
#include
int prime(int n);
int prime(int n)
{
int p;
if(n<4||n%2==1) printf("请重新输入一个整数");
for(p=2;p<=n/2;p++)
{
if(n%p==0) break;
if(p>n/2) printf("%d=%d+%d",n,p,n-p);
}
return 0;
}
int main()
{
int n;
printf("请输入:\n");
scanf_s("%d",&n);
prime(n);
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int isprime(int n)
{
int p;
for (p = 2; p <= n / 2; p++)
{
if (n % p == 0)
return 0;
}
return 1;
}
int main()
{
int n;
printf("请输入:\n");
scanf("%d", &n);
for (int i = 2; i < n; i++)
{
if (isprime(i) && isprime(n - i) && i <= n - i)
printf("%d=%d+%d\n", n, i, n - i);
}
system("pause");
return 0;
}
break改成continue
你这第一遍循环就退出了
#include <stdio.h>
int prime(int n)
{
int p;
for (p = 2; p <= n / 2; p++)
{
if (n % p == 0)
break;
}
return p > n / 2;
}
void ge(int n) //
{
int p;
if (n < 4 || n % 2 == 1)
{
printf("请重新输入一个整数");
return; //
}
for (p = 3; p <= n / 2; p++)
{
if (prime(p) && prime(n - p))
printf("%d=%d+%d\n", n, p, n - p);
}
// return 0;
}
int main()
{
int n;
printf("请输入:\n");
scanf_s("%d", &n);
//prime(n);
ge(n);
system("pause");
return 0;
}