[关闭]
@Duorouplant 2016-12-14T10:17:54.000000Z 字数 565 阅读 668

第一次作业

一道题

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;
}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注