蓝桥杯——素因子去重

    科技2025-05-04  23

    问题描述:

    给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子, 且每个素因子的次数不大于1

    输入格式:

    一个整数,表示n

    输出格式:

    输出一行,包含一个整数p。

    示例输入:

    1000

    示例输出:

    10

    数据规模与约定:

    n<=10^12 样例解释:n=1000=2^3*5*3,p=2*5=10

    代码段:

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws IOException { // 创建输入流 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = reader.readLine(); // 读取数字 long n = Long.parseLong(line); int result = 1; List<Integer> list = new ArrayList<Integer>(); for (int i = 2; i < n; i++) { if (n % i == 0) { list.add(i); n /= i; // 去重 while (n % i == 0) { n /= i; //System.out.println("去重:n=" + n); } } if (n < i) { //System.out.println("退出循环:n=" + n); break; } } list.add((int) n); // 遍历list集合 for (int num : list) { result *= num; } // 打印输出 System.out.println(result); } }
    Processed: 0.014, SQL: 8