編程怎么判斷素?cái)?shù) vba編程判斷是否是素?cái)?shù)?
vba編程判斷是否是素?cái)?shù)?input nfor i2 to sqr(n){if n/iint(n/i){print(no)exit}}print(yes)用一種循環(huán)結(jié)構(gòu)編程求100到200之間所有的素
vba編程判斷是否是素?cái)?shù)?
input n
for i2 to sqr(n)
{
if n/iint(n/i)
{print(no)
exit}
}
print(yes)
用一種循環(huán)結(jié)構(gòu)編程求100到200之間所有的素?cái)?shù). 大神們解釋一下?
這段程序包含兩個(gè)循環(huán)體 i是一個(gè)整型變量,初值為100,每執(zhí)行一次Next i,i加1,直到i200結(jié)束大循環(huán) j是一個(gè)整型變量,初值為2,每執(zhí)行一次Next j,j加1,直到i-1,結(jié)束小循環(huán) x是一個(gè)整型變量,當(dāng)x0時(shí),說明i是素?cái)?shù),x1,i不是素?cái)?shù) 小循環(huán)內(nèi)的判斷i是否為素?cái)?shù),判斷方法是:整數(shù)i在[2,i]的范圍內(nèi)都沒有能被整除的數(shù),則該數(shù)為素?cái)?shù),反之不是素?cái)?shù)。
Private Sub Form_Click() Dim i As Integer, j As Integer, x As Integer //定義三個(gè)整型變量 For i 100 To 200 //大循環(huán),循環(huán)變量為i,循環(huán)范圍為100到200 x 0 //初始認(rèn)為i是素?cái)?shù) For j 2 To i – 1 //小循環(huán),循環(huán)變量為j,循環(huán)范圍為2到i-1 If i Mod j 0 Then x 1 //判斷,如果i/j的余數(shù)為0,x1,i不是素?cái)?shù) Next j //j 1 If x 0 Then Print i //如果x0,i是素?cái)?shù),將i打印出來(lái) Next i //i 1 End Sub //結(jié)束
完數(shù)和素?cái)?shù)的區(qū)別?
1.完數(shù)
一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)稱為“完數(shù)”(因子:除去這個(gè)數(shù)本身的約數(shù)),例如61 2 3;
18 的因子:1,2,3,6,9
編程找出1000以內(nèi)的所有完數(shù)
如何判斷是否完數(shù)?
(1)先找出所有的因子,并且累加它的因子
(2)判斷因子之和是否和原數(shù)相等,如果相等就是完數(shù)
2.素?cái)?shù)
找出1-100之間所有的素?cái)?shù)
方法一:如何判斷i是否是素?cái)?shù)
(1)找出i的所有約數(shù),并累加它們的和,例如:i 5,它的約數(shù)是1和5,約數(shù)和是6;i11,約數(shù)是1和11,和是12;i18,約數(shù)是1,2,3,4,9,18,約數(shù)和39
(2)如果某個(gè)i 的約數(shù)和i 1,那么i就是素?cái)?shù)
方法二:如何判斷i是否是素?cái)?shù)
(1)找出i在[2,i-1]之間的約數(shù)個(gè)數(shù)
(2)如果這個(gè)個(gè)數(shù)是0,那么i就是素?cái)?shù)
方法三:如何判斷i是否是素?cái)?shù)
(1)假設(shè)i是素?cái)?shù)
boolean flag true;//true 代表素?cái)?shù)
(2)找i不是素?cái)?shù)的證據(jù)
如果在[2,i-1]之間只要有一個(gè)數(shù)能夠把i整除了,說明i就不是素?cái)?shù),修改flag false;
素?cái)?shù):又稱為質(zhì)數(shù),指在一個(gè)大于1的自然數(shù)中,除了1和此自然數(shù)本身,不能被其他自然數(shù)整除的數(shù)。