![]() |
有關質數
現在有個問題,印出小於60的質數
但有公式能算出質數嗎?或是有什麼其他辦法?? 麻煩請各位給我一個方向,在邏輯上該怎麼想 除了1與自己外,沒其他因數,然後......? |
你可以做巢狀循環
兩個for 第一個從1到60 每一個數字從1一直除到他本身,這是第二個for 只有1和他本身可以整除就列出 |
如猜謎人所言
要設一個計數器 a For VB 語法:
Private Sub Command1_Click() |
謝謝兩位
雖然還看不大懂,但至少知道要往哪個方向去想了:on_79: |
引用:
首先要質數的定義是: 除了自己和1外無其他的因數(1除外) 再來是談論到因數問題: 若正整數N在根號N中只找到1這個因數,則N為質數(1除外) 原因: 設N.n.m為一自然數,且n * m = N,則n.m為N的因數(註:n >= m) 另設一數k,使其 k * k = N,則就n.m.k的大小而言,n >= k >= m 既然n * m = N,且k * k = N,那在小於或等於k的自然數中必能找到m 所以~若正整數N在根號N中只找到1這個因數,則N為質數(1除外) 由此想法來建構一程式 語法:
#include<iostream> 不知這樣的解說夠不夠清晰^^" |
請問為什麼寫出來後變成從2印到60@@?
語法:
public class zxc{ |
public class zxc{
public static void main(String[] args){ int i,n,max=0; System.out.println("質數有"); for(i=2;i<=60;i++){ for(n=2;n<=i;n++){ if(i==n && i%n==0){ //自己除自己當然可以整除 System.out.println(i); max=i; } } } System.out.println("最大質數"+max); } } |
語法:
public class p11 |
引用:
|
簡單的方式
因為質數有一個特性:只能被 1 和自己本身整除。
因此可以利用此依特性來寫程式... 假設只能被 1 和自己整除的話,代表著只能被整除 2 次 程式碼如下: 語法:
// 質數計算 代表著只能被整除 1 次,程式碼如下: 語法:
// 質數計算 ![]() |
運用 scanf 輸入範圍
還可以用 scanf 做外部輸入範圍
以 2 的指數作範圍 語法:
//質數計算 用開始與結束的值做範圍 語法:
//質數計算 |
運算加速
如過運算上要更快的話...
1.除了原來的只有自己能整除自己外。 2.將偶數過濾掉,只保留公因數 2(偶數部分只有 2 是質數)。 3.整除時,把除數的偶數過濾掉。 最簡單的的改良 語法:
//質數計算 位元輸入改 語法:
//質數計算 範圍輸入改 語法:
//質數計算 |
所有時間均為台北時間。現在的時間是 06:17 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *