编写程序,读入一个正整数,显示该整数的所有素数因子。例如,输入整数为120,输出应为2、2、2、3、5。java
时间: 2024-06-03 10:07:42 浏览: 28
import java.util.Scanner;
public class PrimeFactorization {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int num = input.nextInt();
System.out.print(num + "的素数因子为:");
for(int i = 2; i <= num; i++) {
while(num % i == 0) {
System.out.print(i + " ");
num /= i;
}
}
}
}
//样例输出:
//请输入一个正整数:120
//120的素数因子为:2 2 2 3 5
相关问题
写一个能读入一个正整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)的代码
以下是 Python 代码实现:
```python
def prime_factors(k):
factors = []
d = 2
while d * d <= k:
while (k % d) == 0:
factors.append(d)
k //= d
d += 1
if k > 1:
factors.append(k)
return factors
k = int(input("请输入一个正整数:"))
print(prime_factors(k))
```
该代码使用了最基础的质因数分解的方法,通过从小到大枚举可能的因子,不断除以最小的质因子,直到无法除尽为止。最后,如果剩下的数仍然大于1,则说明它本身就是一个质因子。
写一个能读入一个正整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)的c语言代码
以下是求解质因数的 C 语言代码实现:
```c
#include <stdio.h>
int main()
{
int k, i;
scanf("%d", &k);
printf("The prime factors of %d are: ", k);
for (i = 2; i <= k; i++) {
if (k % i == 0) {
printf("%d ", i);
k /= i;
i--;
}
}
return 0;
}
```
代码思路如下:
1. 读入正整数 `k`;
2. 从 `2` 开始循环到 `k`,判断当前数是否为 `k` 的因子;
3. 如果是,则输出该数,并将 `k` 除以该数,继续循环,直到 `k` 不再包含该因子;
4. 如果不是,则继续循环。
该代码可以输出 `k` 的所有质因数,时间复杂度为 $O(\sqrt{k})$。