怪盗KID


私信TA

用户名:dotcpp0774863

访问量:427

签 名:

一万年太久,只争朝夕。

等  级
排  名 1931
经  验 2513
参赛次数 0
文章发表 20
年  龄 19
在职情况 学生
学  校 哔哩哔哩
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

#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 人评分

  评论区

  • «
  • »