@Duorouplant
2016-12-14T18:17:54.000000Z
字数 565
阅读 733
一道题
Design Tutorial: Learn from Math
题目意思:
创建一个任务的一个方法是学习数学。您可以生成一些随机的数学语句或修改一些定理,以获得新的东西,并从中建立一个新的任务。例如,有一个声明称为“哥德巴赫猜想”。它说:“每一个偶数不少于四可以表示为两个素数之和”。让我们修改它。那么一个这样的语句:“每个整数不小于12可以表示为两个复合数的总和”,不喜欢哥德巴赫的猜想,我可以证明这个定理。给定一个整数n不小于12,表示为两个复合数的和。
方法:
我就从这个数的一半开始查找,只要找到就结束,并输出这俩数。因为题目并未要求找完。
AC代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int work(int i)
{
int j,q;
q=sqrt(i);
for(j=2;j<=q;j++)
{
if(i%j==0) return 1;
}
return 0;
}
int job(int n)
{
int i,m;
m=n/2;
for(i=m;i>=4;i--)
{
if(work(i)==1)
{
if(work(n-i)==1) return i;
}
}
}
int main()
{
int n,i;
scanf("%d",&n);
i=job(n);
printf("%d %d",i,n-i);
return 0;
}