用c语言且用递归算法分解质因数,对给定区间[m,n]的正整数分解质因数,口每一整数表示为质因数从 小到大顺序的乘积形式。如果被分解的数本身是素数,则注明为素数。 例如,2012=22503,2011=(素数!)。
时间: 2023-06-14 11:03:03 浏览: 166
下面是用递归算法分解质因数的C语言代码:
```c
#include <stdio.h>
// 判断是否为素数
int is_prime(int n)
{
if (n <= 1)
return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
// 分解质因数
void factorization(int n)
{
if (is_prime(n)) { // 如果n是素数
printf("%d", n);
return;
}
for (int i = 2; i <= n; i++) {
if (n % i == 0) {
printf("%d*", i);
factorization(n / i);
break;
}
}
}
int main()
{
int m, n;
printf("请输入区间[m, n]的m和n:");
scanf("%d%d", &m, &n);
printf("区间[%d, %d]的正整数分解质因数:\n", m, n);
for (int i = m; i <= n; i++) {
printf("%d=", i);
factorization(i);
printf("\n");
}
return 0;
}
```
上述代码首先定义了一个`is_prime`函数,用于判断一个数是否为素数。然后定义了一个`factorization`函数,用于分解质因数。如果给定的数`n`是素数,则直接输出`n`;否则从`2`至`n`遍历所有因子,如果找到一个因子`i`能够整除`n`,则输出`i`并递归地处理`n/i`。最后在`main`函数中,遍历区间`[m, n]`中的所有正整数,分别对其进行质因数分解并输出。
阅读全文