题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

先求得SIZE内的所有素数,再查表即可
查表从输入的偶数的半值开始向下查找,当两个值都是素数时即满足。
#include <stdio.h>

#define SIZE 1000

int prime[SIZE+1];

void getprime(void);
void checknum(int num);

int main(void)
{
    int num;
    getprime();
    while(scanf("%d",&num)!=EOF){
        checknum(num);
    }
    return 0;
}

void getprime(void)
{
    int i,j,tmp,flag;
    prime[1] = 1,prime[2] = 1,prime[3] = 1;
    for(i=5; i<=SIZE; i+=2){        //偶数不是素数
        tmp = sqrtf(i);
        flag = 1;
        for(j = 3; j <= tmp; j+=2){    //被除数不是偶数
            if(i % j == 0) flag = 0;
        }
        if(flag) prime[i] = 1;
    }
}

void checknum(int num)
{
    int half,i,j;
    for(i = num/2;i>=1;i--){
        j = num - i;
        if(prime[i] && prime[j]){
            printf("%d\n%d\n",i,j);
            break;
        }
    }
}



全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务