Bootstrap

将一个正整数分解质因数-多语言

目录

C 语言实现

Python 实现

Java 实现

Js 实现


题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

  • 如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。
  • 但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。
  • 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

C 语言实现

#include <stdio.h>

int main() {
    int n, i;

    // 提示用户输入一个整数
    printf("请输入整数:");
    scanf("%d", &n);
    
    // 打印输入的整数
    printf("%d = ", n);

    // 从2开始检查每个数是否是n的因数
    for (i = 2; i <= n; i++) {
        // 当i是n的因数时,进行循环
        while (n % i == 0) {
            printf("%d", i); // 打印因数
            n /= i;          // 将n除以因数i
            if (n != 1) {
                printf(" * "); // 如果n不等于1,打印乘号
            }
        }
    }

    printf("\n"); // 换行
    return 0; // 返回0表示程序正常结束
}
  1. 头文件:包含标准输入输出库 #include <stdio.h>
  2. 主函数int main() 是程序的入口点。
  3. 输入:使用 scanf 获取用户输入的整数 n
  4. 输出格式:打印输入的整数,格式为 n =
  5. 质因数分解
    • 使用 for (i = 2; i <= n; i++) 遍历从 2 到 n 的每个整数。
    • 使用 while (n % i == 0) 检查 i 是否是 n 的因数。如果是,则打印 i,并将 n 除以 i
    • 如果 n 仍然不等于 1,则打印乘号 *
  6. 换行:在输出结束后打印换行符。
  7. 返回值return 0; 表示程序正常结束。

这种实现方式清晰易懂,能够正确地对输入的整数进行质因数分解并输出结果。

Python 实现

# 提示用户输入一个整数
n = int(input("请输入整数:"))
print(f"{n} = ", end='')

# 从2开始检查每个数是否是n的因数
first_factor = True  # 用于控制乘号的输出
for i in range(2, n + 1):
    # 当i是n的因数时,进行循环
    while n % i == 0:
        if first_factor:
            first_factor = False  # 第一个因数前不加乘号
        else:
            print(" * ", end='')  # 其他因数前加乘号
        print(i, end='')  # 打印因数
        n //= i  # 将n除以因数i

print()  # 换行

代码说明:

  1. 输入:使用 input() 函数获取用户输入的整数,并将其转换为整数类型。
  2. 输出格式:使用 print(f"{n} = ", end='') 打印输入的整数,格式为 n = ,并保持在同一行。
  3. 质因数分解
    • 使用 for i in range(2, n + 1) 遍历从 2 到 n 的每个整数。
    • 使用 while n % i == 0 检查 i 是否是 n 的因数。如果是,则打印 i,并将 n 除以 i
    • 使用 first_factor 变量来控制乘号的输出,确保第一个因数前不加乘号,后续因数前加乘号。
  4. 换行:在输出结束后打印换行符。

这种实现方式简洁明了,充分利用了 Python 的语法特性。

Java 实现

import java.util.Scanner;

public class PrimeFactorization {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 提示用户输入一个整数
        System.out.print("请输入整数:");
        int n = scanner.nextInt();
        
        // 打印输入的整数
        System.out.print(n + " = ");
        
        // 从2开始检查每个数是否是n的因数
        boolean firstFactor = true; // 用于控制乘号的输出
        for (int i = 2; i <= n; i++) {
            // 当i是n的因数时,进行循环
            while (n % i == 0) {
                if (firstFactor) {
                    firstFactor = false; // 第一个因数前不加乘号
                } else {
                    System.out.print(" * "); // 其他因数前加乘号
                }
                System.out.print(i); // 打印因数
                n /= i; // 将n除以因数i
            }
        }
        
        System.out.println(); // 换行
        scanner.close(); // 关闭扫描器
    }
}
  1. 导入 Scanner 类import java.util.Scanner; 用于获取用户输入。
  2. 主类:定义一个名为 PrimeFactorization 的公共类。
  3. 主方法public static void main(String[] args) 是程序的入口点。
  4. 输入:使用 Scanner 类获取用户输入的整数 n
  5. 输出格式:打印输入的整数,格式为 n =
  6. 质因数分解
    • 使用 for (int i = 2; i <= n; i++) 遍历从 2 到 n 的每个整数。
    • 使用 while (n % i == 0) 检查 i 是否是 n 的因数。如果是,则打印 i,并将 n 除以 i
    • 使用 firstFactor 变量来控制乘号的输出,确保第一个因数前不加乘号,后续因数前加乘号。
  7. 换行:在输出结束后打印换行符。
  8. 关闭扫描器:使用 scanner.close(); 关闭扫描器以释放资源。

Js 实现

// 提示用户输入一个整数
const n = parseInt(prompt("请输入整数:"), 10);
let originalNumber = n; // 保存原始数字以便输出
let result = `${originalNumber} = `; // 初始化结果字符串

// 从2开始检查每个数是否是n的因数
let firstFactor = true; // 用于控制乘号的输出
for (let i = 2; i <= n; i++) {
    // 当i是n的因数时,进行循环
    while (n % i === 0) {
        if (firstFactor) {
            firstFactor = false; // 第一个因数前不加乘号
        } else {
            result += " * "; // 其他因数前加乘号
        }
        result += i; // 添加因数到结果字符串
        n /= i; // 将n除以因数i
    }
}

// 输出结果
console.log(result);
  1. 输入:使用 prompt() 函数获取用户输入的整数,并使用 parseInt() 将其转换为整数。
  2. 保存原始数字:将输入的数字保存到 originalNumber 变量中,以便在输出时使用。
  3. 初始化结果字符串:创建一个字符串 result,用于存储质因数分解的结果,格式为 n =
  4. 质因数分解
    • 使用 for (let i = 2; i <= n; i++) 遍历从 2 到 n 的每个整数。
    • 使用 while (n % i === 0) 检查 i 是否是 n 的因数。如果是,则将因数添加到结果字符串中,并将 n 除以 i
    • 使用 firstFactor 变量来控制乘号的输出,确保第一个因数前不加乘号,后续因数前加乘号。
  5. 输出结果:使用 console.log(result); 输出最终的质因数分解结果。

这种实现方式简洁明了,充分利用了 JavaScript 的语法特性。请注意,prompt() 函数通常在浏览器环境中使用。

 以上实例输出结果为:

请输入整数:90
90=2*3*3*5
;