運用java8新特性stream來解決
成都創(chuàng)新互聯(lián)是專業(yè)的通川網(wǎng)站建設(shè)公司,通川接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行通川網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
參考以下代碼
/**
*?IntStream.range(1,10001)?:獲取一個stream,是從1-10000的
*?filter:?取出stream每個數(shù)字進行過濾,比如選取數(shù)字300,則再構(gòu)造一個stream,從2-299,依次用300取余2-299中的數(shù),若有一個是整除,余數(shù)為0的話,這個數(shù)字就不是我們要找的質(zhì)數(shù),跳過
*?forEach:打印經(jīng)過filter過濾后的stream中的每個數(shù)
*/
IntStream.range(1,10001).filter(outerInt-?!IntStream.range(2,outerInt).anyMatch(innerInt-outerInt%innerInt==0))
.forEach(System.out::println);
求1-N以內(nèi)的所有素數(shù),實現(xiàn)思路如下:
1、 得到1到n之間的素數(shù),存到一個ArrayList集合。
2、判斷一個數(shù)是不是素數(shù):只能被1和本身整除
說明:從2開始除,不需要到n,也就是循環(huán)條件是 n 就可以,這之間只要被整除了,那么他就不是素數(shù)了。
3、設(shè)置主函數(shù),運行?getPrimeNumberToN獲取限定范圍內(nèi)的素數(shù)。?
執(zhí)行結(jié)果圖:
擴展資料:
實現(xiàn)功能的編程事項:
1、模塊化思想。
先拆分需求,先拆分先考慮怎么確定一個數(shù)是不是素數(shù),然后再復(fù)用到所有。不能把方法堆到一起,否則無法復(fù)用代碼。
2、注意注釋。
就算是自己的測試代碼,盡量寫清楚注釋,這樣即使過了三個月,再看代碼,也能清晰明了。不要覺得簡單,就懶得注釋。
3、注意參數(shù)命名。
從類名到方法名,再到變量名,都不能隨意取名,關(guān)于這個命名,不要嫌棄長,重點是意思清楚明白。見名知意(語義化),是最好的。
int i,j;
for(i = 2; i = 100; i++){//從2數(shù)到100,判斷之間的每一個數(shù)是否是質(zhì)數(shù)
//下面的循環(huán)是質(zhì)數(shù)判斷過程
for(j = 2; j = i/2; j++){
if(i % j == 0)
break;//如果這個數(shù)能被一個數(shù)整除,那么這個數(shù)不是質(zhì)數(shù)。break的作用是跳出此次循環(huán),進入下一次循環(huán)。
}
if(j i/2){
System.out.println(i);//如果這個數(shù)不能被自身1/2的數(shù)整除,他就是質(zhì)數(shù),輸出這個數(shù).System.out.println()這個語句就是輸出語句
}
}
System.out.println();//這句語句是多余的,什么也沒打印。
完整代碼及運行結(jié)果如圖。
拓展資料
質(zhì)數(shù)(prime number)又稱素數(shù),有無限個。質(zhì)數(shù)定義為在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)。
這道題只要理解質(zhì)數(shù)的計算方法就容易解答。
最大質(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個素數(shù)
列出前6個素數(shù),它們分別是2、3、5、7、11和13。我們可以看出,第6個素數(shù)是13。
第10,001個素數(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] );