分解质因数

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; // 程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END