1樓:
set talk off
clear
for m=3 to 100 step2 &&在3到100之間的所有奇數中找素數,因為偶數一定不是素數。
n=int(sqrt(m)) &&這是乙個數學知識點,把乙個數m分解為兩個約數的乘積,總有乙個約數一定是小於等於根號m的。所以只需要判斷在2到根號m中這個數有沒有約數就可以了。也可以改為 n=m-1 ,這樣就是在整個符合條件的範圍內全找遍。
比如要找17有沒有約數,最笨的方法是 看17 能不能被 2 3 4.........16為止的數整除。簡單的方法看17能不能被 2 3....
根號17之間的整數整除開。
for i =2 to n &&參考上一段解釋,設定用來除m的數的範圍。
if mod (m,i)=0 &&如果m被i整除了,
exit &&退出此迴圈,到endfor的下一行。說明不用繼續查詢了,已經找到m有乙個約數i
endif
endfor
if i>n && 只有i的值從2 3 ....到n 取一遍之後,退出迴圈時,i才滿足大於n,說明沒有中途退出迴圈,也就是說在2----n範圍內沒有找到能整除m的數,那就輸出 這個數,說明這個數是素數。
?mendif
endfor
首先你這個程式第5行有錯誤,我已經改過了。程式用文字解釋起來太麻煩了,不知你看懂沒?
2樓:匿名使用者
首先,說一下程式的基本思想:因為素數(除2以外)一定是是奇數,所以對3-100之間的所有奇數進行逐一判斷。根據數論的基本定理,判斷乙個數m是否為素數時,只需計算用從3到根號m取整的數依次去除m,判斷是否有餘數為0(等價於整除)的情況即可。
下面對程式主幹部分逐行進行解釋:
for m=3 to 100 step 2 &&設定步長為2,從3開始取值,每次遞進兩個,直到100.即對3-100之間的所有奇數進行遍歷。
n=int(sqrt(m)) &&計算根號m取整
for i =3 to n &&從3到n開始遍歷,後面會用m依次除以3到n,然後計算餘數,由於都是奇數,因此不需要從2開始做判斷。直接從3開始。
if mod (m,i)=0 &&判斷條件,m除以3到n之間的任何乙個數是否的餘數等於0,如果是,執行下面程式。注意,此行有錯誤!因為任何數都可以被其自身整除,所以條件應當修改為:
if m!=i && mod (m,i)=0
exit &&停止當前求餘迴圈,判斷下乙個m
endif &&結束if語句
endfor &&結束求餘迴圈
if i>n &&判斷條件,如果沒有任何乙個3到n之間的數可以整除m,則當前m是乙個素數
?m &&在螢幕上顯示這個m值
endif &&結束if語句
endfor &&結束從3-100的迴圈判斷。
使用vfp編寫程式,要求輸出0-100之間所有的素數
3樓:匿名使用者
你的題目與**不一致呀,
按你的題目要求。可參考我早日的另一答案。
修改範圍300為100,棄掉求和語句,就符合你的題目了。
----- ----- ---- ----** 素數即是質數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。程式中使用函式int(i/j)是否整除,進行判別。
同理也可使用mod(i/j)=0。
clear
set talk off
?" 300以內的素數有: "
s=0for i=2 to 300
x=0for j=2 to i-1
if i/j=int(i/j)
x=1endif
endfor
if x=0
?? i
s=s+i
endif
endfor
?" 300以內的素數的和是:",s
set talk on
cancel
c語言程式設計:輸出3--100之間的所有素數
4樓:李英珏
因為這裡的else 和第乙個if是配對的,如果加了else表示a%i==0 為假。
然而現在的**是要要求a%i==0為真時 在判斷i>b是否為真,再輸出a;
5樓:我愛流雨飛軒
if(i>b)
這一句不用寫啊,直接刪除,為什麼要換成else
6樓:匿名使用者
換成else後,else就和上一句中的if配套了,也就是如果a%i==0不成立,就執行printf("%d\n",a),所以就會重複輸出乙個數。
7樓:匿名使用者
當然咯如果有了else
這個語句就是在for()迴圈內的了
vb程式設計 輸出3到100之間所有素數
8樓:陽光上的橋
dim i,j,x
for i=3 to 100
x=1for j=2 to i-1
if i mod j=0 then x=0next j
if x=1 then print i
next i
9樓:匿名使用者
private sub command2_click()for i = 1 to 100
if prime(i) then print inext
end subpublic function prime(byval m as integer) as boolean '鍒ゆ柇m鏄�惁涓虹礌鏁?
dim b as boolean
dim i as integer
b = true
for i = 2 to sqr(m)
if m mod i = 0 then
b = false
exit for
end if
next i
prime = b
end function
10樓:匿名使用者
private sub command1_click()clsfor i = 2 to 100
j = i \ 2
do while j >= 2
if i mod j = 0 then exit doj = j - 1
loop
if j = 1 then print inext i
end sub
求c語言程式設計 編寫程式求3到100之間的所有素數之和。
11樓:
主函式中定義乙個初值為0的變數s承載素數的累加和,用一for迴圈遍歷3~100間的奇數,判斷這些奇數是否有1和自身以外的因子,沒有的確定為素數並其值累加到s,s便是題解。**如下:
#include "stdio.h"
int main(int argc,char *ar**)printf("the result is %d\n",s);//輸出結果
return 0;
}執行結果如下:
程式設計高手請進,求問題的程式設計,程式設計高手請進,求乙個問題的程式設計。
amax 0 for x 22 99 for y 44 99 for z 66 99 if x y 0 y z 0 a 10.8 x 7.43 y 10.8 z if a amax amax a x1 x y1 y z1 z endend endend endamax x1 y1 z1 amax 2...
求c語言程式設計高手幫忙,求C語言程式設計高手幫忙!!!
初看,程式應先宣告乙個包含20個整型數元素的陣列,但從程式目標來看,根本不需要所有的數,而只需找出次大的數而已,所以只要宣告三個整型變數 輸入 input 最大數 max 次大數 sec 即可。而且從記憶體利用率來看,這樣也更節省記憶體空間。以下程式你的所有要求都滿足了,僅供參考 include c...
求高手解釋塔羅牌,求高手解讀塔羅牌 謝謝
你好 看到了你的補bai充問題,du現在可以幫你解下,如果不zhi準dao請無視。首先聖版 三角,你沒有說明具體的牌意權,我們按照過去 現在 未來 來幫你解讀。過去戰車逆 倒立的戰車告訴我你之前並不順利,你遇到問題並且沒有辦法很好的解決,導致事業不能繼續前進。現在塔逆 在這裡,我們可以看出你對現在的...