Facebook  |  更換登入信箱  | 未收到確認信  | 忘記密碼  | 註冊  | 登入
|

 IT360首頁  

|

論壇跳轉

登入‧會員服務
論壇主頁
草稿 (0)
星號標記 (0)
最新主題
私人消息
統計
論壇控制台
問問題
找答案
<LabVIEW>

‧.LabVIEW

‧.LabVIEW創意工廠

‧.LabVIEW作業習題研討區

<修練>

‧.LabVIEW 2012 修練

<LabVIEW Job>

‧.LabVIEW正職人員招募

‧.專案經驗交換區

‧.報價行情討論區

<PLC>

‧.PLC、人機介面

‧.PLC主機 - 永宏

‧.PLC主機 - 三菱

‧.PLC主機 - 歐姆龍

‧.PLC主機 - 台達電

<PAC>

‧.PAC

<CAD>

‧.SolidWorks 技術交流區

‧.Pro ENGINEER 技術交流區

‧.Autodesk CAD 技術交流區

<嵌入式系統>

‧.Arduino

‧.嵌入式系統綜合討論區

<Matlab>

‧.Matlab

‧.Simulink

<.NET>

‧.Visual Studio .Net

‧.Silverlight 技術

‧.Visual Basic .Net

‧.Visual C# .Net

‧.Visual C++ .NET

‧.ASP.net

<C>

‧.C++

<Ruby>

‧.Ruby討論區

<平行運算>

‧.OpenCL

‧.CUDA技術討論

<移動設備>

‧.Android應用開發

‧.iOS應用開發

‧.Windows Phone應用開發

<Qt>

‧.Qt討論

<資料庫>

‧.資料庫設計與應用

‧.MS SQL Server

‧.Access

‧.mySQL

‧.Oracle

<Web>

‧.ASP

‧.PHP

‧.IIS Serverr

‧.Apache Server

<Orz>

‧.冰存區

‧.違規文章

<產業消息>

‧.產業消息

‧.技術文章轉貼

<站務>

‧.網站功能意見與反應

‧.新聞室

<閒聊八卦>

‧.閒話家常灌水版

‧.工程師甘苦談

‧.運動與健康

‧.跳蚤市場

‧.感情生活

<其他程式設計>

‧.Delphi

‧.Agilent VEE

聯絡我們
如何做出一個判斷質數的程式? - IT論壇
LabVIEW
 IT論壇 : LabVIEW : LabVIEW
問題發問  如何做出一個判斷質數的程式?
Tags: 質數
回覆主題發表新主題
   收藏本文  我的知識庫     加到外部書籤: HemiDemi MyShare Baidu Google Bookmarks Yahoo! My Web Del.icio.us Digg technorati furl 加入此網頁到:YouPush     分享到: Plurk Twitter
推文
0 網友認為
有用文章
1 個人遇過
相同問題

作者
信息 << 上一主題 | 下一主題 >>
triple0173
新手
新手
頭像
[尚無外包接案履歷]


註冊時間: 2007/3/31
LabVIEW: LabVIEW 7.0
作業系統: Windows XP
居住地區: 高雄市
發表: 25
本文分級:
網友分級:2.333333
  發送私人消息
發表日期: 2007/5/30 at 2:09pm | IP已記錄
軟體環境:LabVIEW 7.0、Windows XP
引用發文

質數是指數值在1以上,而且該數值的因數只有本身跟1。

我有拉了前面...但是判斷質數我該怎設定??

以下是我自己拉的前面...但是要怎判斷1以後的質數我就不知道該怎設定了@@



Edited by triple0173 on 2007/5/30 at 2:11pm
返回頂部
 
Benjamin
Admin Group
Admin Group
頭像
[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2003/5/03
來自: Taiwan
LabVIEW: LabVIEW 2013
作業系統: Windows 8
居住地區: 台北市
發表: 6555
本文分級:5
網友分級:4.636605
  發送私人消息
發表日期: 2007/5/30 at 4:45pm | IP已記錄
軟體環境:LabVIEW 8.2、Windows XP
引用發文

對於質數的說明,請參考:http://zh.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0

裡面有提到如何判斷質數:

引用:

尋找質數

尋找在給定限度內的質數排列,埃拉托斯特尼篩法法是個很好的方法。然而在實際中,我們往往是想知道一個給定數是否是質數,而不是生成一個質數排列。進而,知道答案是很高的機率就是已經很滿意的了,用素性測試迅速地檢查一個給定數(例如,有幾千位數的長度)是否是質數是可能的。典型的方法是隨機選取一個數,然後圍繞著這個數和可能的質數N檢查一些方程式。重複這個過程幾次後,它宣佈這個數是明顯的合數或者可能是質數。這種方法是不完美的:對某些測試而言,例如費馬測試,不論選取了多少隨機數都有可能將一些合數判斷成可能的質數,這就引出了另一種數偽質數。而像米勒-拉賓測試,雖然只要選取夠多數字來檢驗方程式,就可以保證其檢驗出的質數性是正確的,但這個保證門檻的數量太過龐大,甚至比試除法所需的\sqrtn還要多,在有限時間內運行起來只能知道答案正確的機率很高,不能保證一定正確。

目前最大的已知質數是230402457 − 1(此數字位長度是9,152,052),它是在2005年12月15日GIMPS發現。這組織也在2005年2月18日發現了目前所知第二大的已知質數225964951 - 1(此數字位長度是7,816,230)。

數學家一直努力找尋產生質數的公式,但截至目前為止,並沒有一個基本函數或是多項式可以正確產生所有的質數。歷史上有許多試驗的例子:17世紀法國數學家梅森(Mersenne)在他的一個著作當中討論了這樣一種我們現在稱之為梅森質數的質數,Mp=2p - 1,本來以為只要p是一個質數,n = 2p - 1就會是一個質數,這在p = 3p = 5p = 7都是正確的,但是p = 112^111=2047=23\times 89}-就不是質數了。

檢驗質數

檢查一個正整數N是否為質數,最簡單的方法就是試除法,將該數N用小於等於\sqrtn的所有質數去試除,若均無法整除,則N為質數。

2002年,印度人 M. Agrawal 、N. Kayal 以及 N. Saxena 提出了 AKS 質數檢驗演算法,證明了可以在多項式時間內檢驗是否為質數。

依照上述的辦法,寫一個LabVIEW程式來判斷是否為質數應該不難。

在NI網站也有一些範例程式,張貼出來您參考一下:

網站連結:Generating Prime Numbers
程式:primegen.llb收藏此檔案




請多多點擊贊助商廣告,有贊助商的支持才有穩定的Server和快速頻寬。
我的部落格:http://benjamin.blog.it360.tw/
返回頂部
 
liuyunan
Senior Member
Senior Member
頭像
[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2006/1/14
來自: Taiwan
LabVIEW: LabVIEW 8.6
作業系統: Windows XP
居住地區: 新竹市
發表: 288
本文分級:5
網友分級:4.728814
  發送私人消息
發表日期: 2007/5/31 at 12:10am | IP已記錄
軟體環境:LabVIEW 8.2、Windows XP
引用發文

NI網站的範例程式是找出小於輸入數值的所有質數,沒有判斷輸入的數值是否為質數的功能。

我是想到一種較笨的方法來判定輸入的數值是否為質數,不過和NI網站的範例程式有一樣的毛病,只要輸入數值超過7位數以上就要等一段時間才有結果,建議輸入的數值不要超過8位數。有高手知道如何有效率判斷9位數以上數值是否為質數的方法嗎?

[FP][BD]質數判斷.vi收藏此檔案

icon版本:7.1.1
版號:118587392
元件數:1
前景圖:[FP]
背景圖:[BD]
轉檔

返回頂部
 
Bridge
新手
新手
頭像
[尚無外包接案履歷]


註冊時間: 2006/6/20
LabVIEW: LabVIEW 8.0
作業系統: Windows XP
居住地區: 新竹縣
發表: 32
本文分級:5
網友分級:4
  發送私人消息
發表日期: 2007/6/01 at 3:00pm | IP已記錄
軟體環境:LabVIEW 8.0、Windows XP
引用發文

liuyunan wrote:

NI網站的範例程式是找出小於輸入數值的所有質數,沒有判斷輸入的數值是否為質數的功能。

我是想到一種較笨的方法來判定輸入的數值是否為質數,不過和NI網站的範例程式有一樣的毛病,只要輸入數值超過7位數以上就要等一段時間才有結果,建議輸入的數值不要超過8位數。有高手知道如何有效率判斷9位數以上數值是否為質數的方法嗎?

[FP][BD]質數判斷.vi收藏此檔案

icon版本:7.1.1
版號:118587392
元件數:1
前景圖:[FP]
背景圖:[BD]
轉檔


因為你的程式中做了很多虛功。二樓的回答已經很清楚了。
要判斷一個數(假設為X)是否為質數,只需要測試(根號X)以下的所有質數即可。
並不需要從3開始一個一個測試到X-1為止。
比如說,你要測試101是否為質數,根號101為10點多,在此之下的質數只有2、3、5、7
因此你只要拿這四個數字下去和101相除即可。
問題是,怎麼找出(根號X)之下所有質數?
同樣參考二樓的回答,使用埃拉托斯特尼篩法」來篩選出所有質數在進行計算即可。

這樣做下來,就算是12位的數字都可以很快找出答案。但相對的,程式上寫起來就會相對複雜許多。
返回頂部
 
liuyunan
Senior Member
Senior Member
頭像

5

[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2006/1/14
來自: Taiwan
LabVIEW: LabVIEW 8.6
作業系統: Windows XP
居住地區: 新竹市
發表: 288
本文分級:5
網友分級:4.728814
  發送私人消息
發表日期: 2007/6/01 at 4:50pm | IP已記錄
軟體環境:LabVIEW 8.2、Windows XP
引用發文

Bridge wrote:

因為你的程式中做了很多虛功。二樓的回答已經很清楚了。
要判斷一個數(假設為X)是否為質數,只需要測試(根號X)以下的所有質數即可。
並不需要從3開始一個一個測試到X-1為止。
比如說,你要測試101是否為質數,根號101為10點多,在此之下的質數只有2、3、5、7
因此你只要拿這四個數字下去和101相除即可。
問題是,怎麼找出(根號X)之下所有質數?
同樣參考二樓的回答,使用埃拉托斯特尼篩法」來篩選出所有質數在進行計算即可。

這樣做下來,就算是12位的數字都可以很快找出答案。但相對的,程式上寫起來就會相對複雜許多。

基本上NI的範例也算是用埃拉托斯特尼篩法」來篩選出所有質數,我之前有先寫過把那個範例當SubVI來用,在輸入數值到12位以上時一樣要等很久。

NI的那個範例也是有不少虛功動作,而我有在之前PO的那個程式在輸入數值後面加個開根號的VI,做出來的速度經測試,只比以下的程式略慢一些。

質數判斷.llb收藏此檔案

返回頂部
 
liuyunan
Senior Member
Senior Member
頭像
[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2006/1/14
來自: Taiwan
LabVIEW: LabVIEW 8.6
作業系統: Windows XP
居住地區: 新竹市
發表: 288
本文分級:2
網友分級:4.728814
  發送私人消息
發表日期: 2007/6/01 at 5:23pm | IP已記錄
軟體環境:LabVIEW 8.2、Windows XP
引用發文

補充一下

如果只是問比輸入數值小的質數有多少個時?用NI的那個範例找起來還蠻快的。

但用找出來的質數陣列去除求出輸入數值是否為質數也不容易,就算輸入的12位數都是1,找出的質數也有幾萬個,要算幾萬次才有結果。

返回頂部
 
Bridge
新手
新手
頭像
[尚無外包接案履歷]


註冊時間: 2006/6/20
LabVIEW: LabVIEW 8.0
作業系統: Windows XP
居住地區: 新竹縣
發表: 32
本文分級:2
網友分級:4
  發送私人消息
發表日期: 2007/6/01 at 6:07pm | IP已記錄
軟體環境:LabVIEW 8.0、Windows XP
引用發文


PrimeFinding.rar收藏此檔案

奇怪,難道是CPU有差嗎?我執行我寫的程式還蠻快的耶。
12位數的數字不用一秒就可以算出來了呀。
到13或14位才會稍微慢一點。
返回頂部
 
liuyunan
Senior Member
Senior Member
頭像
[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2006/1/14
來自: Taiwan
LabVIEW: LabVIEW 8.6
作業系統: Windows XP
居住地區: 新竹市
發表: 288
本文分級:3
網友分級:4.728814
  發送私人消息
發表日期: 2007/6/01 at 11:34pm | IP已記錄
軟體環境:LabVIEW 8.2、Windows XP
引用發文

12位數的數字不用一秒?用我的電腦執行你程式的結果.....看來我該考慮買新電腦了
返回頂部
 
Bridge
新手
新手
頭像
[尚無外包接案履歷]


註冊時間: 2006/6/20
LabVIEW: LabVIEW 8.0
作業系統: Windows XP
居住地區: 新竹縣
發表: 32
本文分級:2
網友分級:4
  發送私人消息
發表日期: 2007/6/04 at 9:17am | IP已記錄
軟體環境:LabVIEW 8.0、Windows XP
引用發文

liuyunan wrote:
12位數的數字不用一秒?用我的電腦執行你程式的結果.....看來我該考慮買新電腦了


啊!!拍水,我的錯

我的電腦是p4 3.0G + 1000 DDR Ram
我一直以為自己的電腦效能並沒有多好。
不過看來造成時間上的差異應該是來自電腦硬體的關係了
返回頂部
 
Benjamin
Admin Group
Admin Group
頭像
[尚無外包接案履歷]
 已通過行動電話認證

註冊時間: 2003/5/03
來自: Taiwan
LabVIEW: LabVIEW 2013
作業系統: Windows 8
居住地區: 台北市
發表: 6555
本文分級:
網友分級:4.636605
  發送私人消息
發表日期: 2010/6/28 at 5:55pm | IP已記錄
軟體環境:LabVIEW 2009、Windows 7
引用發文

我寫了一個計算質數的小程式,有興趣的網友可以看看:
程式:[FP][BD]求質數.vi收藏此檔案

icon版本:9.0
版號:151027712
元件數:8
前景圖:[FP]
背景圖:[BD]
轉檔






請多多點擊贊助商廣告,有贊助商的支持才有穩定的Server和快速頻寬。
我的部落格:http://benjamin.blog.it360.tw/
返回頂部
 
SCOTT7O
Senior Member
Senior Member
頭像
[顯示外包接案履歷]
 已通過行動電話認證

註冊時間: 2008/11/27
LabVIEW: LabVIEW 2010
作業系統: Windows 7
居住地區: 台北市
發表: 605
本文分級:
網友分級:3.413043
  發送私人消息
發表日期: 2010/6/28 at 6:13pm | IP已記錄
軟體環境:LabVIEW 8.6、Windows XP
引用發文

http://tw.myblog.yahoo.com/liu-yunan/article?mid=609&prev=673&next=387&l=f&fid=15
返回頂部
 

關鍵字
關鍵字:(新增 )
質數
搜尋本站:





如果您想回復本文章您必須先 登陸  登入
如果您還沒有註冊您必須先 註冊

  回覆主題發表新主題
列印預覽 列印預覽

論壇跳轉
不可以 在本版發表新主題
不可以 在本版回復主題
不可以 在本版刪除您的發言
不可以 在本版編輯您的發言
不可以 在本版創建投票
不可以 在本版投票



Powered by Web Wiz Forums version 7.7a
Copyright ©2001-2004 Web Wiz Guide

頁面執行時間為 1.9370 秒。
 列印格式
|
 寄給朋友
|
 加到最愛
|
 意見回饋
|
 加到知識庫
|
 開啟知識庫
|

  |  我的最愛 隱私權保護政策 免責聲明 廣告刊登 系統整合 合作提案 聯絡我們