c语言编写程序由数学基本定理可知:任何一个大于1的非素数整数即合数都可以唯一分解成若干个素数的乘积。编写程序从控制台读入一个合数合数的大小不会超过int数据类型表示的范围求这个合数可以分解成的素数。
以下是一个可能的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表示程序正常结束
原文地址: https://www.cveoy.top/t/topic/hxhW 著作权归作者所有。请勿转载和采集!