亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一到考試題,大牛幫忙看一下,有什么問題,就是執行不出來啊。

一到考試題,大牛幫忙看一下,有什么問題,就是執行不出來啊。

chore 2015-09-02 10:49:58
?如果一個正整數不能被大于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()用變量接收下輸入一次就夠了。

查看完整回答
2 反對 回復 2015-09-02
  • chore
    chore
    非常感謝!
  • chore
    chore
    i的范圍應該再擴到到long吧,integer的max_value是十位數,明顯不夠用啊。
?
chore

TA貢獻2條經驗 獲得超0個贊

把i設置成j的開平方數效率會更高,我試了。

查看完整回答
反對 回復 2015-09-03
?
chore

TA貢獻2條經驗 獲得超0個贊

int報錯,但long沒有。

55e6c0ee000140af05000247.jpg

55e6c0ee0001ecf105000250.jpg


查看完整回答
反對 回復 2015-09-02
  • 3 回答
  • 0 關注
  • 2314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號