廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 10286 個閱讀者
 
<<   1   2  下頁 >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
知名不具
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x12
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Java][求助] 寫出一個程式列出1~100中的質數
這是我自己寫的

class Prime
{
public static void main(String[] args)
{
int i = 100; ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被知名不具在2005-08-06 18:45重新編輯 ]


獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2005-08-05 15:25 |
PeterPan 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
知名人士
級別: 知名人士 該用戶目前不上站
推文 x1 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

@@" 恕我直言,樓主可能要多用點心在程式邏輯方面。

第一行的 int i = 100; 沒問題,但是下一行的 int x =(int) Math.sqrt(); 編譯器就看不懂你的意思了,Math.sqrt() 這個 method 必須要傳入一個 double 數值,然後他會回傳一個開根號後的 double 數值,所以第二行是錯誤的寫法。
第三行的 for (i=2; i<=100; i++) 可以這樣寫沒錯,但是一般的寫法是 for (int i=2; i<=100; i++),這樣子就不需要事先宣告 i 變數,且 i 變數只能存活在該迴圈內,程式碼看起來就能夠比較簡潔明瞭。
迴圈中的 if (x % i != 0) 則是因為 x 無法接到數值,所以不合法。

回到最初的問題,你想要寫一個程式列出1~100的所有質數。而質數的定義是:除了 1 與本身以外,無法被其他數值整除﹝在檢查它是不是質數的時候,只需要從 2 檢查到該數值的平方根即可﹞。所以我們至少需要兩個迴圈,第一個迴圈產生1~100的數值來當作被檢查的數字,第二個迴圈則用來產生2~該數字的平方根﹝取小於平方根的正整數﹞並用一個 if 判斷式來檢查該數字是否為質數。基本上用來產生檢查數字的第二個迴圈,我會改用一個 method 來代替。

你的程式可能要重新設計,以符合需求。


神:在多項技術領域,具有不可取代性且擁有高度權威
魔:在某項技術領域,具有不可取代性且擁有高度權威
妖:有高度實戰經驗,且在專業領域上具有domain-Knowledge
俠:在技術層面上有過人專業能力
人:可以獨立運作、設計暨開發系統
蟲:coder only (my level)
獻花 x0 回到頂端 [1 樓] From: | Posted:2005-08-05 17:37 |
知名不具
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x12
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝PeterPan的回覆.
小弟是一個剛接觸Java的新手,
以前從未接觸過程式設計,

請問您所說的程式邏輯要如何研究才能進步呢?
複製程式
class Prime
{
       public static void main(String[] args) 
       {
              for (int i=1; i<=100; i++)
              {
                     double x = (Math.sqrt(i));
                     for (double j=2; j<=x; j++)
                     {
                            if (i % j != 0)
                            {
                                   System.out.println(i);
                            }
                     }
              }
       }
}
這是我又重寫的程式,
但還是得不到正確答案,
我的邏輯概念真的需要加強 表情


[ 此文章被知名不具在2005-08-06 22:27重新編輯 ]


獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2005-08-05 19:31 |
PeterPan 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
知名人士
級別: 知名人士 該用戶目前不上站
推文 x1 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

有點接近正確答案了:
1. x 要宣告成 int 才對
2. if 判斷式有誤

可以先把程式的流程圖畫出來,再依照流程圖設計。再想想看。


神:在多項技術領域,具有不可取代性且擁有高度權威
魔:在某項技術領域,具有不可取代性且擁有高度權威
妖:有高度實戰經驗,且在專業領域上具有domain-Knowledge
俠:在技術層面上有過人專業能力
人:可以獨立運作、設計暨開發系統
蟲:coder only (my level)
獻花 x0 回到頂端 [3 樓] From: | Posted:2005-08-05 19:48 |
知名不具
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x12
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

流程圖???
我在補習班學java時,
老師沒教過要畫流程圖...
要怎麼畫比較好呢?


獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2005-08-05 20:18 |
PeterPan 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
知名人士
級別: 知名人士 該用戶目前不上站
推文 x1 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片


此文章被評分,最近評分記錄
財富:200 (by panasonic732)


神:在多項技術領域,具有不可取代性且擁有高度權威
魔:在某項技術領域,具有不可取代性且擁有高度權威
妖:有高度實戰經驗,且在專業領域上具有domain-Knowledge
俠:在技術層面上有過人專業能力
人:可以獨立運作、設計暨開發系統
蟲:coder only (my level)
獻花 x1 回到頂端 [5 樓] From: | Posted:2005-08-05 20:22 |
知名不具
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x12
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

昨晚想了一個晚上想不出來....
流程圖也不知該怎麼畫....
我沒有寫程式的天份嗎 表情


獻花 x0 回到頂端 [6 樓] From:台灣中華電信 | Posted:2005-08-06 14:59 |
PeterPan 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
知名人士
級別: 知名人士 該用戶目前不上站
推文 x1 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

想學會寫程式,除了要有過人的邏輯推理能力,最重要的還要有無比的毅力,不是一朝一夕就能學會的。

直接給你答案會妨礙你學習,只能祝你好運囉。


神:在多項技術領域,具有不可取代性且擁有高度權威
魔:在某項技術領域,具有不可取代性且擁有高度權威
妖:有高度實戰經驗,且在專業領域上具有domain-Knowledge
俠:在技術層面上有過人專業能力
人:可以獨立運作、設計暨開發系統
蟲:coder only (my level)
獻花 x0 回到頂端 [7 樓] From: | Posted:2005-08-06 16:07 |
知名不具
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x12
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我把問題PO在BBS上,
有人給我以下建議:
搜尋 2~100 的質數 {

變數:目前想要檢查的數字 ;
變數:目前想要檢查的數字是或不是質數;

檢查是否可以被 2~(目前想要檢查的數字-1)整除 {
如果可以被某一個整除. 那設定 變數:目前想要檢查的數字是或不是質數 為 不是(false).
}

如果在上一個檢查迴圈已經知道不是質數了. 那就不要列印出來.
否則就列印出來.
}

希望這樣說明, 提問者可以理解程式應該有的邏輯.

我依照他的指點寫了以下程式:
複製程式
class Prime 
{
       public static void main(String[] args) 
       {
              for (int i=1; i<=100; i++)
              {
                     for (int j=2; j<=(i-1); j++)
                     {
                            if (i % j == 0)
                            {
                                   break;
                            }
                            else
                            {
                                   System.out.println(i);
                            }
                     }
              }
       }
}

但會出現以下問題:
印出來的結果,少了2這個質數,並且多了9和99這兩個不是質數的數字,
而且印出的質數會有很多個,例如5會印出三個,7會印出五個,11會印出八個,
要如何讓質數只能印出一個呢?


[ 此文章被知名不具在2005-08-08 10:09重新編輯 ]


獻花 x0 回到頂端 [8 樓] From:局域網對方和您在同一內部網 | Posted:2005-08-08 10:03 |
PeterPan 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎
知名人士
級別: 知名人士 該用戶目前不上站
推文 x1 鮮花 x99
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

1與2直接列印出來比較好,從3以上開始找。

檢查的除數,從2~被除數的開根號無條件捨去小數點。

﹝如果在上一個檢查迴圈已經知道不是質數了. 那就不要列印出來.否則就列印出來.﹞
↑有語病,改成如下比較恰當

如果已經檢查到最後一個除數,而且仍然不能整除,則該數值為質數。若任一次檢查時能被除數整除,則該數值不是質數。


神:在多項技術領域,具有不可取代性且擁有高度權威
魔:在某項技術領域,具有不可取代性且擁有高度權威
妖:有高度實戰經驗,且在專業領域上具有domain-Knowledge
俠:在技術層面上有過人專業能力
人:可以獨立運作、設計暨開發系統
蟲:coder only (my level)
獻花 x0 回到頂端 [9 樓] From:台灣中華電信 | Posted:2005-08-08 13:10 |

<<   1   2  下頁 >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.077128 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言