每个合数都可以写成几个质数(也可称为素数)相乘的形式 ,这几个质数就都叫做这个合数的质因数。
#include <stdio.h>
int isPrime(int num)// 判断一个数是否是素数
{
if (num < 2) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
void prime(int num)// 质因数分解并输出乘积形式的质因数
{
int i;
int flag = 0; // 标志位记录是否已经输出了质因数
int tag = 0;//标志位如果为素数直接跳出
tag=isPrime(num);
if (tag == 1)
{
printf("%d是素数", num);
exit(0);
}
printf("%d = ", num);
for (i = 2; i <= num; i++) {
if (isPrime(i) && num % i == 0) //将每个为质数的i进行求积
{
while (num % i == 0) {
num /= i;
if (flag) {
printf(" * ");
}
printf("%d", i);
flag = 1;
}
}
}
printf("\n");
}
int main() {
int n;
printf("请输入一个整数 n:");
scanf("%d", &n);
prime(n);
return 0;
}