【CodeForces 472A】Design Tutorial: Learn from Math

时间:2021-11-16 20:08:27

题意:给你一个大于等于12的数,要你用两个合数表示出来。//合数指自然数中除了能被1和本身整除外,还能被其他的数整除(不包括0)的数。

分析:我们知道偶数除了2都是合数,给你一个偶数,你减去一个偶数得到的就是偶数啦,因为n>=12,所以减去4的话,得到的是>=8的偶数,肯定也是合数,当然你也可以减去6、8,大于8就不行了。

然后给你奇数呢?你减去一个奇数就得到偶数啦,减去一个是合数的奇数,最小的就是9,奇数时:n>=13,n-9>=4

#include<stdio.h>
int main(){
    int a,b;
    int n;
    scanf("%d",&n);
    if(n%2){
        printf("%d %d\n",9,n-9);
    }else{
        printf("%d %d\n",8,n-8);
    }
    return 0;
}

 

这题也可以枚举

#include<stdio.h>
int isComposite(int a){
    if(a==2)return 0;
    for(int i=2;i*i<=a;i++)
        if(a%i==0)return 1;
    return 0;
}

int main(){
    int a,n;
    scanf("%d",&n);
    for(a=2;a<n;a++)
        if(isComposite(a)&&isComposite(n-a)){
            printf("%d %d",a,n-a);
            break;
        }
    return 0;
}