C语言之函数调用15—递归法求哥德巴赫猜想

//穷举法!
/*
==================================================

题目:哥德巴赫猜想,一个不小于6的偶数总可以表示为两个素数之

和!如10=3+7;

==================================================
*/
#include<stdio.h>
int sushu(int n)
{
int i,k;
if(n==2||n==1)
return 1;
if(n%2==0)
return 0;
else 
{
k=n/2;
for(i=3;i<=k;i++)
{
if(n%i==0)
return 0;
else
return 1;
}
}
}

void main()
{
int n;
int i,j,p=0;
while(n%2!=0||n<6)
{
printf("输入一个不小于6的偶数\nn=");
scanf("%d",&n);
}
for(i=2;i<n;i++)
for(j=2;j<n;j++)
{
if(sushu(i)&&sushu(j)&&(i<j)&&(i+j==n))
{
p++;
printf("%3d->  %2d=%2d+%2d\n",p,n,i,j);
}
}
printf("\n共有%d种表达方法!\n",p);
}
/*
=============================================================
评:

关键在于分析清楚条件,首先要大于6,其次是偶数,因子必须是素数,且一大一

小,所以首先要写判断素数的函数,然后就是穷举,让所有因子组合,满足if条件

的就输出!


读者可以参看《 C语言之函数调用09—判断一个数是否为素数》判断素数的方法,

并将本程序中的调用函数替换,依旧可以达到目的。

==============================================================
*/

你可能感兴趣的:(C语言,函数调用,哥德巴赫猜想)