求1-N以內(nèi)的所有素?cái)?shù),實(shí)現(xiàn)思路如下:
邯山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
1、 得到1到n之間的素?cái)?shù),存到一個(gè)ArrayList集合。
2、判斷一個(gè)數(shù)是不是素?cái)?shù):只能被1和本身整除
說明:從2開始除,不需要到n,也就是循環(huán)條件是 n 就可以,這之間只要被整除了,那么他就不是素?cái)?shù)了。
3、設(shè)置主函數(shù),運(yùn)行?getPrimeNumberToN獲取限定范圍內(nèi)的素?cái)?shù)。?
執(zhí)行結(jié)果圖:
擴(kuò)展資料:
實(shí)現(xiàn)功能的編程事項(xiàng):
1、模塊化思想。
先拆分需求,先拆分先考慮怎么確定一個(gè)數(shù)是不是素?cái)?shù),然后再復(fù)用到所有。不能把方法堆到一起,否則無法復(fù)用代碼。
2、注意注釋。
就算是自己的測試代碼,盡量寫清楚注釋,這樣即使過了三個(gè)月,再看代碼,也能清晰明了。不要覺得簡單,就懶得注釋。
3、注意參數(shù)命名。
從類名到方法名,再到變量名,都不能隨意取名,關(guān)于這個(gè)命名,不要嫌棄長,重點(diǎn)是意思清楚明白。見名知意(語義化),是最好的。
Java程序:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("請輸入一個(gè)整數(shù):");
int number = scan.nextInt();
PrimeNumber pn = new PrimeNumber();
pn.setNumber(number);
pn.printAll();
}
}
class PrimeNumber {
protected int number;
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
public boolean isPrimeNumber(int number) {
int k = (int)(Math.sqrt(number));
for(int i=2; i=k; i++) {
if(number % i == 0) {
return false;
}
}
return true;
}
public void printAll() {
for(int i=2; i=number; i++) {
if(isPrimeNumber(i)) {
System.out.println(i);
}
}
}
}
運(yùn)行測試:
請輸入一個(gè)整數(shù):100
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
最大質(zhì)因數(shù)
13195的所有質(zhì)因數(shù)為5、7、13和29。600851475143最大的質(zhì)因數(shù)是多少?
long i=2,n=600851475143L;
while (in){??? //避免n本身就是質(zhì)數(shù),否則循環(huán)到sqrt(n)就可以了
if(n % i==0){
n=n/i;
i--;
}
i++;
}
System.out.println( i );
第10001個(gè)素?cái)?shù)
列出前6個(gè)素?cái)?shù),它們分別是2、3、5、7、11和13。我們可以看出,第6個(gè)素?cái)?shù)是13。
第10,001個(gè)素?cái)?shù)是多少?
第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] );
一個(gè)好的算法,要經(jīng)的起推敲,不要只求結(jié)果
import?java.util.ArrayList;
import?java.util.List;
public?class?Primes?{
public?static?void?main(String[]?args)?{
//?求素?cái)?shù)
ListInteger?primes?=?getPrimes(200);
//?輸出結(jié)果
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?以內(nèi)的所有素?cái)?shù)
*
*?@param?n
*????????????范圍
*
*?@return?n?以內(nèi)的所有素?cái)?shù)
*/
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
*????????????要判斷的數(shù)字
*?@param?primes
*????????????包含素?cái)?shù)的列表
*
*?@return?如果?n?能被?primes?中任何一個(gè)整除,則返回?true。
*/
private?static?boolean?divisible(int?n,?ListInteger?primes)?{
for?(Integer?prime?:?primes)?{
if?(n?%?prime?==?0)?{
return?true;
}
}
return?false;
}
}
/**
*?0-100:是:101個(gè)數(shù)字,不是100個(gè);
*?0與1,不是質(zhì)數(shù)也不是合數(shù):
*?以下代碼寫的有點(diǎn)冗余:只因?yàn)轭}目要求,布爾數(shù)組要參與運(yùn)算!
*?其實(shí)一個(gè)循環(huán)就可以解決的事!
*/
public?class?Prime?{
public?static?void?main(String[]?args)?{
int?arr[]=new?int[101],count=0;//元素?cái)?shù)組!
boolean[]?brr=new?boolean[101];//標(biāo)記數(shù)組!
for(int?i=0;iarr.length;i++)?//循環(huán)復(fù)制!
arr[i]=i;
f:for?(int?i?=?0;?iarr.length;?i++)?{//判斷!
if(i2)continue?f;//跳過,0,1;
for(int?tem=i;tem--!=2;)?
if(i%tem==0)?
continue?f;
brr[i]=true;//標(biāo)記
}
for?(int?i?=?0;?i??brr.length;?i++)?{//查看!
if(brr[i]!=false)?{
count++;
System.out.print(arr[i]+"?");
}
}
System.out.println("\r\n0-100質(zhì)數(shù)共:"+count+"個(gè)!");
}
}
程序如下,希望有所幫助
public class Prime {
//判斷質(zhì)數(shù)
public static void isPrime(int num) {
int j = 2;
for (; j = Math.sqrt(num); j++) {
if (num % j == 0) {
System.err.println(num + "不是質(zhì)數(shù)!");
return;
}
}
if (j Math.sqrt(num)) {
System.err.println(num + "是質(zhì)數(shù)!");
return;
}
System.err.println(num + "不是質(zhì)數(shù)!");
return;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.err.println("請輸入數(shù)字:");
int num = sc.nextInt();//接收輸入
isPrime(num);//判斷是否為質(zhì)數(shù)
}
}
本文名稱:java里求質(zhì)數(shù)的代碼,java輸出質(zhì)數(shù)最簡單的代碼
新聞來源:http://chinadenli.net/article44/hdoiee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、用戶體驗(yàn)、搜索引擎優(yōu)化、網(wǎng)站建設(shè)、網(wǎng)站收錄、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)