输入一个整数m,找到最小的整数n,使得m*n是完全平方
n可以看作m的奇数次的因子的乘积。
package java11_17;import java.util.ArrayList;import java.util.Scanner;public class java_1117 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint m,M;int n;Scanner input=new Scanner(System.in);System.out.println("Enter an integer m:");m=input.nextInt();M=m;ArrayList<Integer> list=new ArrayList<Integer>();for(int i=2;m>1;i++)//找出m的所有约数,1和m除外{if(m%i==0){list.add(i);System.out.println(i);m=m/i;i=1;}}n=cfcs(list);System.out.println("The smallest number n for m*n to be a perfect square is "+n+"\nm*n is "+M*n);}public static int cfcs(ArrayList<Integer> list){int mul=1;ArrayList<Integer> List=new ArrayList<Integer>();for(int i=0;i<list.size();i++)//将m的约数集筛选,把偶数次的数据都去除,奇数次的数据只留一个。{for(int j=i+1;j<list.size();j++){if(list.get(i)==list.get(j)){list.remove(j);list.remove(i);j--;}else{continue;}}}for(int i=0;i<list.size();i++)//把奇数次的数据相乘得n{System.out.println(list.get(i));mul*=list.get(i);}return mul;}}
截图如下: