码迷,mamicode.com
首页 > 编程语言 > 详细

12-算法训练 素因子去重

时间:2019-02-04 10:29:59      阅读:861      评论:0      收藏:0      [点我收藏+]

标签:deb   NPU   lan   blank   boolean   prim   string   java   button   

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-算法训练 素因子去重

标签:deb   NPU   lan   blank   boolean   prim   string   java   button   

原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10351473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!