分解质因数
Description
每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数是数学中常见的问题,现在给定一个正整数N,请你编程序对N分解质因数,并将分解式输出来。
Input
只有一个正整数N (N<=32767)
Output
只有一行,就是N分解成质因子的连乘积的式子,并且要求按因子从小到大从左到右的格式输出
Sample Input
样例-:
24
样例二:
13
Sample Output
样例一:
24=2*2*2*3
样例二:
13=13
python解法
n = int(input()) # 从标准输入读取整数n
print(n, "=", end="") # 输出n,后面跟着"="
# 初始化一个标志位,用于判断是否已经打印了至少一个质因数
has_factor = False
# 从2开始寻找质因数,直到i的平方大于n
i = 2
while i * i <= n:
# 当n能被i整除时
while n % i == 0:
# 如果已经打印了至少一个质因数,则添加一个'*'
if has_factor:
print("*", end="")
# 打印质因数i
print(i, end="")
has_factor = True # 设置标志位为True,表示已经打印了至少一个质因数
# 用质因数i来除n
n //= i
# 如果n已经是1,则所有的质因数都找到了,跳出循环
if n == 1:
break
i += 1
# 如果n仍然大于1,则它本身就是一个质数
if n > 1:
# 如果已经打印了至少一个质因数,则添加一个'*'
if has_factor:
print("*", end="")
# 打印质数n
print(n, end="")
c++解法
#include <iostream>
using namespace std;
int main() {
int n, i;
bool isFirstFactor = true; // 用来跟踪是否是第一个质因数
cin >> n; // 从标准输入读取整数n
cout << n << "="; // 输出n,后面跟着"="
// 从2开始寻找质因数,直到i的平方大于n
for (i = 2; i * i <= n; i++) {
// 当n能被i整除时
while (n % i == 0) {
// 输出质因数i,如果不是第一个质因数,则在前面添加"*"
cout << (isFirstFactor ? "" : "*") << i;
isFirstFactor = false; // 标记已经输出过一个质因数了
// 用质因数i来除n
n /= i;
}
// 如果n已经是1,则所有的质因数都找到了,跳出循环
if (n == 1) break;
}
// 如果n仍然大于1,则它本身就是一个质数
if (n > 1) {
// 输出质数n,并在前面添加"*"(如果前面已经有质因数了)
cout << (isFirstFactor ? "" : "*") << n;
}
cout << endl; // 输出换行符,使输出更整洁
return 0; // 程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=187
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=187
文章版权归作者所有,未经允许请勿转载。
THE END