Java实现 蓝桥杯 算法训练 素因子去重

tech2022-08-25  108

问题描述

给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式   一个整数,表示n 输出格式   输出一行,包含一个整数p。 样例输入 1000 样例输出 10 数据规模和约定   n<=10^12   样例解释:n=1000= 2 ^3 * 5 ^3,p=2*5=10

思路: 求出这个正整数的所有素因子,重复的素因子只算做一个,然后相乘

import java.util.Scanner; public class 素因子去重 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long n = sc.nextLong(); long p = 1; for (int i = 2; i <= Math.sqrt(n); i++) { // 判断这个数是否是素因子 boolean bool = false; while (n % i == 0) { n /= i; bool = true; // System.out.println(i +" "+n); } //最后素因数就是本身或者是质数的话结束循环 if (n == i) break; if (bool) { p *= i; } } // 得出的p的值 System.out.println(p * n); } }
最新回复(0)