CSUST 校赛-G.哥德巴赫猜想

来源:互联网 发布:单页面网站源码 编辑:程序博客网 时间:2024/06/15 19:44

题目描述


题目标题:

校赛-G.哥德巴赫猜想


题目描述:

任一大于2的偶数,都可以表示成两个质数之和。


输入描述:

输入可能包含多个测试样例。

每行包含一个数n (2 <= n <= 100000)


输出描述:

对每个n输出1行,包含两个质数a b,要求a<=b,且a + b = n。若存在多组解,输出a最小那组。


样式输入:

4
6
8
10
12
14


样式输出:

2 2
3 3
3 5
3 7
5 7
3 11


此题关键在于优化,具体见代码。

#include<stdio.h>bool is_prime(int a){    if(a==2)        return 1;    if(a%2==0)        return 0;    else    {        for(int i=3; i*i<=a; i++,i++)        {            if(a%i==0)                return 0;        }        return 1;    }}int main(){    int n;    while(~scanf("%d",&n))    {        if(is_prime(n-2))        {            printf("2 %d\n",n-2);            continue;        }        for(int i=3; i<=n/2; i+=2)        {            if(is_prime(i)&&is_prime(n-i))            {                printf("%d %d\n",i,n-i);                break;            }        }    }    return 0;}


0 0
原创粉丝点击