• 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;
    	}
    	
    }
    

      

  • 相关阅读:
    react 踩坑第一天
    vue-cli+axios+跨域
    vuex 进阶 mapState mapGetter mapActions mapMutations
    vue Bus
    各种html布局
    echarts柱状图设置渐变色
    html设置一个当前时间
    css设置字体渐变色
    C++中指针与引用详解
    go-admin 开源后台管理系统
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10351473.html
Copyright © 2020-2023  润新知