用c语言写一个程序,要求能将任意正整数用质数进行分解
时间: 2023-02-22 17:40:05 浏览: 81
好的,下面是用 C 语言实现的质因数分解程序:
```
#include <stdio.h>
#include <math.h>
void prime_factors(int n) {
int i;
for (i = 2; i <= sqrt(n); i++) {
while (n % i == 0) {
printf("%d ", i);
n /= i;
}
}
if (n > 2) {
printf("%d", n);
}
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("该数的质因数分解结果为:");
prime_factors(n);
return 0;
}
```
这段代码使用了质因数分解的算法,首先对该数进行因数分解,并将所有的质因数输出到屏幕上。
相关问题
用c语言设计一个程序 任意输入一个正整数x,将它逆序打印出来
好的,这个问题是关于编程的,很简单。下面是一个用C语言编写的程序,在任意输入一个正整数x后,将其逆序打印出来:
```
#include <stdio.h>
int main()
{
int x, y = 0;
printf("请输入一个正整数x: ");
scanf("%d", &x);
while (x > 0)
{
y = y * 10 + x % 10;
x /= 10;
}
printf("逆序数字为:%d", y);
return 0;
}
```
当您运行此程序并输入一个正整数x时,程序将自动将其逆序打印出来。希望能对您有所帮助!
用c语言写一个程序,输入任意一个正整数,按从高到低位的次序输出各位上的数字
以下是用c语言编写的程序,可以实现输入任意一个正整数,按从高到低位的次序输出各位上的数字:
```c
#include <stdio.h>
int main() {
int num, i, j, digit, temp;
int arr[10]; // 最多只有 10 位数,所以开一个长度为 10 的数组
printf("请输入一个正整数:");
scanf("%d", &num);
// 将各个位的数字存储到数组中
digit = 0;
while (num > 0) {
arr[digit++] = num % 10;
num /= 10;
}
// 冒泡排序,按从高到低位的次序输出各位上的数字
for (i = 0; i < digit - 1; i++) {
for (j = 0; j < digit - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("从高到低位的次序输出各位上的数字:");
for (i = 0; i < digit; i++) {
printf("%d", arr[i]);
}
return 0;
}
```
程序运行结果示例:
```
请输入一个正整数:123456789
从高到低位的次序输出各位上的数字:987654321
```