?如果一個(gè)正整數(shù)不能被大于1的完全平方數(shù)所整除,那么我們就將該數(shù)稱為無(wú)平方數(shù)因數(shù)的數(shù)。例如,靠前的一些無(wú)平方數(shù)因數(shù)的數(shù)是{1,2,3,5,6,7,10,11,13,14,15,17,19…}。創(chuàng)建一個(gè)class?SquareFree,其中包括一個(gè)函數(shù)getNumber,在給定一個(gè)int?n后,該函數(shù)能夠返回第n個(gè)最小無(wú)平方因數(shù)的數(shù)。請(qǐng)注意這里是從1開(kāi)始的,那么如果n=1,該算法將會(huì)返回最小的無(wú)平方數(shù)因數(shù)的數(shù)。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("請(qǐng)輸入第n位的n:");
System.out.println("輸入的是數(shù)字:"+sc.nextInt());
System.out.println("第"+sc.nextInt()+"位的無(wú)平方數(shù)因數(shù)的數(shù)為"+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貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超2個(gè)贊
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開(kāi)始,另外nextInt()用變量接收下輸入一次就夠了。
添加回答
舉報(bào)
0/150
提交
取消