输入一个数字,判断这个数字可以由哪些素数相加得到
比如24可以是5和19相加得到,而5和19都是素数
这个代码可以找出所有素数组合,如果没有这样的组合输出无
代码比较简单,但是能解决问题,利用了电脑计算速度快的特点,尝试了每一个数,汇总得到结果
#define _CRT_SECURE_NO_WARNINGS
// 禁用安全警告
#include <stdio.h>int isprime(int i);int main()
{int n; // 输入的数int flag = 0; // 标记是否找到素数之和int i; // 循环变量printf("输入一个数:");scanf("%d", &n);// 检查从 2 到 n/2 的每个数for (i = 2; i <= n / 2; i++){// 如果 i 和 n-i 都是素数if (isprime(i) && isprime(n - i)){//打印结果。有素数之和,及公式printf("%d = %d + %d\n", n, i, n - i);flag = 1;// 标记有素数之和}else{// 没有素数之和//不操作}}// 打印结果,没素数之和if (flag == 0)printf("%d没有素数之和。", n);return 0;
}// 判断一个数是否为素数的函数
int isprime(int i)
{int n = 0;// 检查从 2 到 i/2 的每个数是否能整除 ifor (n = 2; n <= i / 2; n++){if (i%n == 0){return 0;// 不是素数}else{// 检查下一个数}}//所有数都不能整除//返回是素数return 1;
}
输出结果:
输入一个数:24
24 = 5 + 19
24 = 7 + 17
24 = 11 + 13