首页 > 编程语言 > 详细

C语言题目2

时间:2019-11-15 16:52:49      阅读:55      评论:0      收藏:0      [点我收藏+]

题目描述

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对

输入描述:

输入一个偶数

输出描述:

输出两个素数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int sushu(int a);

int main()
{
    int oushu = 0;
    while (scanf("%d", &oushu) != 0)
    {
        //要考虑到比如26 -> 13 +13 的情况 所以从0开始循环
        for (int i = 0; i < oushu; i = i + 1)
        {
            //拆分成两个数 一个xiao 一个da 加起来是oushu本身
            int xiao = oushu / 2 - i;
            int da = oushu - xiao;
            if (sushu(xiao) == 1 && sushu(da) == 1)
            {
                printf("%d\n%d", xiao, da);
                break;
            }
        }
    }
    return 0;
}

int sushu(int a)
{
    //标志位,当flg等于0时代表不是素数(质数)
    int flg = 1;
    for (int i = 2; i < a; i++)
    {
        if (a%i == 0)
        {
            flg = 0;
            break;
        }
    }
    return flg;
}

注意考虑一个偶数直接拆分成两个质数的特殊情况

 


 

 

 

 

 

C语言题目2

原文:https://www.cnblogs.com/qifeng1024/p/11867749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!