如果一个正整数不能被大于1的完全平方数所整除,那么我们就将该数称为无平方数因数的数。例如,靠前的一些无平方数因数的数是{1,2,3,5,6,7,10,11,13,14,15,17,19…}。创建一个class SquareFree,其中包括一个函数getNumber,在给定一个int n后,该函数能够返回第n个最小无平方因数的数。请注意这里是从1开始的,那么如果n=1,该算法将会返回最小的无平方数因数的数。n 的取值范围为1到1,000,000,000(其中包括1和1,000,000,000) package com.imooc.concurrent;
import java.util.Scanner;
public class SquareFree {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入第n位的n:");
System.out.println("输入的是数字:"+sc.nextInt());
System.out.println("第"+sc.nextInt()+"位的无平方数因数的数为"+getNumber(sc.nextDouble()));
sc.close();
}
public static double getNumber(double n){
double count=0, value=0;
for(double i=1;i<=Double.MAX_VALUE;i++){
for(double j=1;j<=i;j++){
if(i%(j*j)!=0){
count++;
if(count==n){
value=i;
break;
}
}
}
}
return value;
}
}
3 回答
已采纳
uSimple
TA贡献1条经验 获得超2个赞
public static int getNum(int n) { int count = 0; label: for (int i = 1; i <= Integer.MAX_VALUE; i++) { for (int j = 2; j <= i; j++) { if (i % (j*j) == 0) { continue label; } } if (++count == n) { return i; } } return 0; }
j不能从1开始,另外nextInt()用变量接收下输入一次就够了。
添加回答
举报
0/150
提交
取消