求1-N以內的所有素數,實現思路如下:
創新互聯專注于臺州網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供臺州營銷型網站建設,臺州網站制作、臺州網頁設計、臺州網站官網定制、小程序開發服務,打造臺州網絡公司原創品牌,更為您提供臺州網站排名全網營銷落地服務。
1、 得到1到n之間的素數,存到一個ArrayList集合。
2、判斷一個數是不是素數:只能被1和本身整除
說明:從2開始除,不需要到n,也就是循環條件是 n 就可以,這之間只要被整除了,那么他就不是素數了。
3、設置主函數,運行?getPrimeNumberToN獲取限定范圍內的素數。?
執行結果圖:
擴展資料:
實現功能的編程事項:
1、模塊化思想。
先拆分需求,先拆分先考慮怎么確定一個數是不是素數,然后再復用到所有。不能把方法堆到一起,否則無法復用代碼。
2、注意注釋。
就算是自己的測試代碼,盡量寫清楚注釋,這樣即使過了三個月,再看代碼,也能清晰明了。不要覺得簡單,就懶得注釋。
3、注意參數命名。
從類名到方法名,再到變量名,都不能隨意取名,關于這個命名,不要嫌棄長,重點是意思清楚明白。見名知意(語義化),是最好的。
最大質因數
13195的所有質因數為5、7、13和29。600851475143最大的質因數是多少?
long i=2,n=600851475143L;
while (in){??? //避免n本身就是質數,否則循環到sqrt(n)就可以了
if(n % i==0){
n=n/i;
i--;
}
i++;
}
System.out.println( i );
第10001個素數
列出前6個素數,它們分別是2、3、5、7、11和13。我們可以看出,第6個素數是13。
第10,001個素數是多少?
第1至10001都找出來了:
int a[]=new int[10001];
a[0]=2;
a[1]=3;
int n=5,k,i=2;
while (i10001){
for ( k=0;ki;k++)?? ?if(n % a[k] ==0 ) break;
if (k ==i ) a[i++]=n; ?
n+=2;
}
System.out.println(a[10000] );
一個好的算法,要經的起推敲,不要只求結果
import?java.util.ArrayList;
import?java.util.List;
public?class?Primes?{
public?static?void?main(String[]?args)?{
//?求素數
ListInteger?primes?=?getPrimes(200);
//?輸出結果
for?(int?i?=?0;?i??primes.size();?i++)?{
Integer?prime?=?primes.get(i);
System.out.printf("%8d",?prime);
if?(i?%?10?==?9)?{
System.out.println();
}
}
}
/**
*?求?n?以內的所有素數
*
*?@param?n
*????????????范圍
*
*?@return?n?以內的所有素數
*/
private?static?ListInteger?getPrimes(int?n)?{
ListInteger?result?=?new?ArrayListInteger();
result.add(2);
for?(int?i?=?3;?i?=?n;?i?+=?2)?{
if?(!divisible(i,?result))?{
result.add(i);
}
}
return?result;
}
/**
*?判斷?n?是否能被整除
*
*?@param?n
*????????????要判斷的數字
*?@param?primes
*????????????包含素數的列表
*
*?@return?如果?n?能被?primes?中任何一個整除,則返回?true。
*/
private?static?boolean?divisible(int?n,?ListInteger?primes)?{
for?(Integer?prime?:?primes)?{
if?(n?%?prime?==?0)?{
return?true;
}
}
return?false;
}
}
首先介紹下:質數是除了本身和1以外,沒有質因數,就是沒有數能夠整除之;合數是除了本身和1以外還有第三個數能整除之。
具體示例代碼如下:
public?class?Demo2?{
public?static?void?main(String[]?args)?{
Scanner?scan?=?new?Scanner(System.in);
System.out.print("請輸入一個數:");
int?num?=?scan.nextInt();
int?index?=?0;//使用一個數來標記是質數還是合數
for?(int?i?=?2;?i??num;?i++)?{
if?(num?%?i?==?0)?{
index++;
}
}
if?(index?==?0)?{//index等于0表示質數
System.out.println("這是個質數");
}
else?{//index大于0表示合數
System.out.println("這是個合數");
}
}
}
需要注意的是:1不算質數也不算合數。
int sum =0;int x=0;
for(int m =2,m=100,m++){//循環從2開始,2最小的質數,循環到100
for(int n = 2,nm,n++){//循環除以比自己小的數字
if(m%n==0){//若余數為0,則個數加一,即去的可被整除的數字的個數
x++;
}
}
if(x==0){//當m不可以整除比自己小的整數后,加sum。
sum+=m;
}
}
如此循環,到100結束,不能整除小于自身的數字的和就是sum了。
往樓主采納
參考代碼如下:
packagetest;
publicclassTest{
publicstaticvoidmain(String[]args){
intj;
for(inti=2;i=100;i++)//1不是素數,所以直接從2開始循環
{
j=2;
while(i%j!=0)
j++;//測試2至i的數字是否能被i整除,如不能就自加
if(j==i)//當有被整除的數字時,判斷它是不是自身
System.out.println(i);//如果是就打印出數字
}
}
}
擴展資料:
質數又稱素數。一個大于1的自然數,除了1和它自身外,不能整除其他自然數的數叫做質數;否則稱為合數。
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
網站欄目:Java質素代碼 素數代碼java
新聞來源:http://www.yijiale78.com/article22/hgoccc.html
成都網站建設公司_創新互聯,為您提供軟件開發、靜態網站、云服務器、企業網站制作、App開發、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯