C语言题目2
作者:互联网
题目描述
任意一个偶数(大于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; }
注意考虑一个偶数直接拆分成两个质数的特殊情况
标签:题目,int,xiao,C语言,偶数,素数,sushu,oushu 来源: https://www.cnblogs.com/qifeng1024/p/11867749.html