编程题:计算一个数是否可为两个素数之和
输入正整数: 34 34 = 3 + 31 34 = 5 + 29 34 = 11 + 23 34 = 17 + 17
#include "stdio.h" #include "math.h" int isPrime(int num) { if (num <= 1) return 0; // 1 及更小的数不是素数 if (num == 2) return 1; // 2 是素数 if (num % 2 == 0) return 0; // 排除偶数 for (int i = 3; i <= sqrt(num); i += 2) { if (num % i == 0) { return 0; } } return 1; } int prime(int n1, int n2) { int count = 0; for (int i = n1; i <= n2; i++) { if (isPrime(i)) { count++; } } return count; } int main(){ int n1,n2,c; for(int i=1;i<=3;i++) { printf("input two number:"); fflush(stdout); scanf("%d%d", &n1, &n2); if ((n1 > 0 && n1 < 1000) && (n2 > 0 && n2 < 1000) && n1 <= n2) { break; } else { printf("Invalid input. Please make sure 0 < n1 <= n2 < 1000 and n1 <= n2.\n"); } } printf("总共有%d个素数\n",prime(n1, n2)); return 0; }
#include <stdi...
用户登录可进行刷题及查看答案
#include <stdio.h> int checkPrime(int n); int main() { int n, i, flag = 0; printf("输入正整数: "); scanf("%d", &n); for(i = 2; i <= n/2; ++i) { // 检测判断 if (checkPrime(i) == 1) { if (checkPrime(n-i) == 1) { printf("%d = %d + %d\n", n, i, n - i); flag = 1; } } } if (flag == 0) printf("%d 不能分解为两个素数。", n); return 0; } // 判断素数 int checkPrime(int n) { int i, isPrime = 1; for(i = 2; i <= n/2; ++i) { if(n % i == 0) { isPrime = 0; break; } } return isPrime; }
登录后提交答案