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

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

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;
        }
    }
}



全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务