以下是一个可能的C语言程序:

#include <stdio.h>
#include <math.h>

int is_prime(int n) {
    if (n < 2) {
        return 0;
    }
    int i;
    for (i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int n;
    printf("请输入一个合数:");
    scanf("%d", &n);
    printf("%d可以分解成以下素数的乘积:\n", n);
    int i;
    for (i = 2; i <= n; i++) {
        if (is_prime(i) && n % i == 0) {
            printf("%d ", i);
            n /= i;
            i--;
        }
    }
    printf("\n");
    return 0;
}

程序首先定义了一个判断素数的函数is_prime,它接受一个整数参数n,并返回1或0表示n是否为素数。函数首先判断n是否小于2,如果是则返回0;否则从2到sqrt(n)依次判断n是否能被整除,如果能则返回0,否则返回1。

main函数中,程序首先从控制台读入一个整数n,然后利用一个循环从2到n依次判断每个数是否为素数并且是否能被n整除。如果是,则输出该数,并将n除以该数,继续判断。由于一个合数可以分解成多个素数的乘积,因此除以一个素数后,剩下的部分可能仍然是合数,需要继续判断。如果i被除以n之后仍然能整除n,则需要将i减1,以便下一轮循环继续判断i是否为n的因数。

程序最后输出一个换行符以便美观,并返回0表示程序正常结束

c语言编写程序由数学基本定理可知:任何一个大于1的非素数整数即合数都可以唯一分解成若干个素数的乘积。编写程序从控制台读入一个合数合数的大小不会超过int数据类型表示的范围求这个合数可以分解成的素数。

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

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