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; }
注意考虑一个偶数直接拆分成两个质数的特殊情况