京东,数据分析,第二题 求x*y=n的数
附上代码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); if(n<1 || n>1000){ System.out.println("No"); } int nows[] =new int[n]; while(in.hasNext()){ for (int i=0;i<n;i++){ nows[i]=in.nextInt(); } String[] res = get_res(nows); for(String str:res){ System.out.println(str); } } } static String[] get_res(int[] nows){ String res[] = new String[nows.length]; for(int i =0;i<nows.length;i++){ //如果是2的次幂 if((nows[i]&(nows[i]-1))==0 || nows[i]<2 || nows[i]>Math.pow(2, 63)){ res[i]="No"; }else{ res[i]=get_x_y(nows[i]); } } return res; } //得到一个数的x*y=n的所有值 static String get_x_y(int n){ String res ="No"; int x=2,y=n; while(x<y){ if(x*y==n){ //x和y的位置互换 if(x%2==0 && y%2!=0){ res = y+" "+x; } break; } else if(x*y<n){ x++; }else if(x*y>n){ y--; } } return res; } }