解题思路:
注意事项:
参考代码:
#include<stdio.h> #include<math.h> // 引入数学库,用于sqrt函数 int main() { int positive_even_number; scanf("%d", &positive_even_number); if (positive_even_number < 4) { // 如果输入的正偶数小于4,则无法形成素数对 printf("0\n"); return 0; } int nums[10000] = { 0 }; nums[0] = 2; int len = 1; for (int i = 3; i < positive_even_number; i += 2) { // 只检查奇数,因为偶数除了2都不是素数 int isprime = 1; for (int j = 3; j <= sqrt(i); j += 2) { // 只检查到sqrt(i),且只检查奇数 if (i % j == 0) { isprime = 0; break; } } if (isprime == 1) { nums[len++] = i; } } // 打印数组nums[](可选) // for (int i = 0; i < len; i++) { // printf("%d,", nums[i]); // } // printf("\n"); int kind = 0; for (int i = 0, j = len - 1; i < j; i++) { // 注意这里j的初始化在循环外部,且i<j while (j > i && nums[i] + nums[j] > positive_even_number) { j--; } if (nums[i] + nums[j] == positive_even_number) { kind++; } } // 注意:如果positive_even_number是4,则输出应为1(2+2),但在此逻辑下不会检查相同的数 // 如果需要包括相同数的情况,可以在检查前额外添加一行代码: // if (positive_even_number % 2 == 0 && positive_even_number / 2 == 2) kind++; printf("%d\n", kind); return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1267 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:770 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:699 |
1009题解浏览:802 |
简单的a+b (C语言代码)浏览:529 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:721 |
勾股数 (C语言代码)浏览:830 |
找出最长的字符串来 (C语言代码)浏览:1841 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:381 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:726 |