C语言实现:判断偶数是否为两个素数之和

本文提供了一个C语言程序,用于判断一个给定的偶数是否可以表示为两个素数的和。

#include <stdio.h>

int isPrime(int n) {
    // 判断素数,如果是素数返回1,不是素数则返回0
    if (n <= 1) {
        return 0;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

int findSmallerPrime(int num) {
    // 将偶数num表示为两个素数之和,返回其中较小的素数
    int prime1 = 0, prime2 = 0;
    for (int p = 2; p <= num / 2; p++) {
        if (isPrime(p) && isPrime(num - p)) {
            prime1 = p;
            prime2 = num - p;
            break;
        }
    }
    return (prime1 < prime2) ? prime1 : prime2;
}

int main() {
    int num;
    printf('Enter an even number: ');
    scanf('%d', &num);
    
    if (num % 2 != 0) {
        printf('Invalid input! Please enter an even number.\n');
        return 0;
    }
    
    int smallerPrime = findSmallerPrime(num);
    if (smallerPrime == 0) {
        printf('%d cannot be expressed as the sum of two prime numbers.\n', num);
    } else {
        printf('The smaller prime number that can represent %d as the sum of two prime numbers is: %d\n', num, smallerPrime);
    }
    
    return 0;
}

代码解析:

  1. isPrime(int n) 函数:

    • 接收一个整数 n 作为参数。
    • 判断 n 是否为素数。
    • 如果 n 是素数,则返回 1,否则返回 0
  2. findSmallerPrime(int num) 函数:

    • 接收一个偶数 num 作为参数。
    • 寻找两个素数,它们的和等于 num
    • 返回这两个素数中较小的一个。
  3. main() 函数:

    • 从用户那里获取一个偶数。
    • 调用 findSmallerPrime() 函数来查找构成该偶数的较小的素数。
    • 打印结果,显示该偶数是否可以表示为两个素数的和,以及较小的素数。

示例:

如果用户输入偶数 10,程序将输出:

The smaller prime number that can represent 10 as the sum of two prime numbers is: 3

结论:

这个C语言程序有效地判断了一个偶数是否可以表示为两个素数之和,并返回了构成该偶数的较小素数。程序逻辑清晰,代码简洁易懂。

C语言实现:判断偶数是否为两个素数之和

原文地址: https://www.cveoy.top/t/topic/kuu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录