c语言编写程序:输入一个正整数n(1< n<2^31),对其进行质因数分解,输出分解结果>)
时间: 2023-05-24 12:03:51 浏览: 60
A:
以下是C语言代码实现:
```
#include <stdio.h>
int main() {
int n, i;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("%d=", n);
for (i = 2; n > 1; i++) {
while (n % i == 0) {
printf("%d", i);
n = n / i;
if (n > 1) {
printf("*");
}
}
}
printf("\n");
return 0;
}
```
运行结果示例:
```
请输入一个正整数n:60
60=2*2*3*5
```
相关问题
c语言编写程序:输入一个正整数n(1< n<2^31),对其进行质因数分解,输出分解结果>),如果输出结果中有相同的数相乘,将它们改成乘方的形式
。以下是C语言实现:
```c
#include <stdio.h>
#include <math.h>
void prime_factors(int n) {
int i, j;
int factor_count;
int factors[32];
int powers[32];
factor_count = 0;
while (n % 2 == 0) {
n /= 2;
factors[factor_count] = 2;
powers[factor_count] = 1;
factor_count++;
}
for (i = 3; i <= sqrt(n); i += 2) {
while (n % i == 0) {
n /= i;
factors[factor_count] = i;
powers[factor_count] = 1;
factor_count++;
}
}
if (n > 2) {
factors[factor_count] = n;
powers[factor_count] = 1;
factor_count++;
}
printf("%d=", n);
for (i = 0; i < factor_count; i++) {
for (j = i + 1; j < factor_count; j++) {
if (factors[j] == -1) {
continue;
}
if (factors[j] == factors[i]) {
powers[i]++;
factors[j] = -1;
}
}
if (i == factor_count - 1 || factors[i + 1] != -1) {
printf("%d", factors[i]);
if (powers[i] > 1) {
printf("^%d", powers[i]);
}
if (i != factor_count - 1) {
printf("*");
}
}
}
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
prime_factors(n);
return 0;
}
```
这里使用了数组来存储质因数和它们的幂,然后按格式输出。特别地,对于相同的质因数,我们将它们的幂加起来,然后输出乘方形式。
编写一个c语言程序:将一个正整数分解质因数。比如输入 90,输出 90-2*3*3*5
```
#include <stdio.h>
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("%d=", num);
for (int i = 2; i <= num; i++) {
while (num % i == 0) {
printf("%d", i);
num /= i;
if (num != 1) {
printf("*");
}
}
}
return 0;
}
```
说明:
1. 首先输入一个正整数;
2. 然后用一个循环从2开始遍历到这个数,判断这个数是否为质数;
3. 如果这个数是质数,就不断将这个数除以这个质数,并输出这个质数;
4. 如果这个数不是质数,就继续除以这个质数,并输出这个质数;
5. 直到这个数被分解成1为止,输出完整的分解式。