12-算法训练 素因子去重

Posted zhumengdexiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12-算法训练 素因子去重相关的知识,希望对你有一定的参考价值。

http://lx.lanqiao.cn/problem.page?gpid=T513

                算法训练 素因子去重  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1
输入格式
  一个整数,表示n
输出格式
  输出一行,包含一个整数p。
样例输入
1000
样例输出
10
数据规模和约定
  n<=10^12
  样例解释:n=1000=2^3*5*3,p=2*5=10
 
思路:注意到数据范围,首先确定是用long 类型,然后考虑到其实无需用到素数的判断,因为我是从2开始判断的,
所以每次都会将能除开的数除尽,根本不会有合数,同时注意到每次处理完,n都在变小,所以不是非要循环到原始的
n, 而是当前的最大值,因为的它的素因子最大只能是自己。
import java.util.Scanner;
import java.math.*;

public class Main {

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
//		long n = cin.nextInt();
		long n = cin.nextLong();
		
		long ans = 1;
		long x = n;
		for(long i = 2; i <= x; i++) {
			if(x % i == 0) {
//			if(x % i == 0 && isPrime(i)) {
				ans *= i;
			}
			while(x % i == 0) {
				x /= i;
			}
		}
		System.out.println(ans);
	}
	
	public static boolean isPrime(long x) {
		for(long i = 2; i <= Math.sqrt(x); i++) {
			if(x % i == 0)
				return false;
		}
		return true;
	}
	
}

  

以上是关于12-算法训练 素因子去重的主要内容,如果未能解决你的问题,请参考以下文章

算法训练——素因子去重

2021.12.10--《21-22-1蓝桥训练8》

hdu 6287 口算训练(可持久化线段树+线性筛)

丑数 二 ---- 设计一个算法,找出只含素因子`2`,`3`,`5` 的第 n 小的数

丑数 二 ---- 设计一个算法,找出只含素因子`2`,`3`,`5` 的第 n 小的数

最大素因子算法优化