分析:
1.素數:
判斷條件1:只能被1和本身整除的稱為素數;
判斷條件2:在區間(1,x/
2)中找不到能整除素數x的整數;
判斷條件3:在區間(1,sqrt
(x))中找不到能整除素數x的整數;
2.方法:很多,但不外是迴圈巢狀外加條件語句;*/
class
printsushu
}//根據flag的值判斷是否輸出i
if(flag)
} system.out.
println
('\n'
+"---------------------------");
//方法二:根據判斷條件2進行遍歷檢查,減少遍歷次數
//外層迴圈遍歷被除數i(因為1既不是素數也不是和數,所以直接從2開始遍歷)
for(
int i =
2; i <=
100; i++)}
//根據flag的值判斷是否輸出i
if(flag)
} system.out.
println
('\n'
+"---------------------------");
//方法三:根據判斷條件3進行遍歷檢查,減少遍歷次數
//外層迴圈遍歷被除數i(因為1既不是素數也不是和數,所以直接從2開始遍歷)
for(
int i =
2; i <=
100; i++)}
//根據flag的值判斷是否輸出i
if(flag)
} system.out.
println
('\n'
+"---------------------------");
/*方法四:在方法三的前提上優化,優化基礎是除2外的所有偶數均不是素數,
*(i+=2)只遍歷奇數,減少外層遍歷次數;同理,由於奇數是不能被偶數整除的,
*(j+=2)只遍歷奇數,減少內層遍歷次數
*/ system.out.
print
("2 ");
//外層迴圈遍歷被除數i(因為1既不是素數也不是和數,所以直接從2開始遍歷)
for(
int i =
3; i <=
100; i +=2)
}//根據flag的值判斷是否輸出i
if(flag)
} system.out.
println
('\n'
+"---------------------------");
//聯想一下,能被2整除(偶數)的直接剔除,同樣的道理,能被3or5整除的剔除掉會不會讓外層迴圈的次數更少呢?
//此處才到100,若是1000呢?10000呢?
//定義乙個陣列,由於剔除了偶數,故陣列長度不會超過總個數的一半
int[
] arr =
newint
[500];
int count =0;
for(
int i =
6; i <=
1000
; i++)if
(flag)
} system.out.
println
("6~1000中剔除能被2or3or5整除的數後還剩"
+ count +
"個")
; system.out.
println
("1~1000中所有素數為:");
system.out.
print
("2"
+"\t");
system.out.
print
("3"
+"\t");
system.out.
print
("5"
+"\t");
count =0;
for(
int i =
0; i <
500; i++
)for
(int j =
7; j <= math.
sqrt
(arr[i]
); j +=2)
}if(flag)
} system.out.
println
("\n"
+"---------------------");
system.out.
println
("\n"
+"其中6~1000中剔除能被2or3or5整除的數中還是素數的有"
+ count +
"個");}
}
輸出1 100之間的素數
思路 取出1 100,寫乙個布林型別的的方法判斷是不是素數,是素數就輸出。判斷是不是素數的方法是 如果是 1直接返回 false,不是1 時,先得到該數的 2次方根,從 2開始遍歷直到該數的 2次根。如果取到的數能把 2到該數的 2次方根之間的數除盡,就不是素數,除不盡就是。能被2除盡的就不是質數。...
Python輸出1 100的數學資訊
今天我們來輸出1 100之間的一些數學資訊。本次我們不需要任何第三方庫。輸出1 100所有數字的和 sumnumber 0for i in range 1 101 sumnumber i print 1 100之間所有數字之和是 sumnumber 或者使用sum計算和方法 print 1 100之...
1 100之間 7 的倍數的個數,並列印
7的倍數 x 7 0 偶數的話 x 2 0 1 package com.ibeve.demo 23 4 2.1 100之間 7 的倍數的個數,並列印 5 思路 6 1.先對 1 100進行迴圈 遍歷 通過迴圈的形式 7 2.在遍歷的過程中,定義條件,只對7的倍數進行操作 8 3.因為 7 的倍數不確...