求vfp程式設計高手解釋程式輸出,求VFP程式設計高手解釋程式 輸出3 100之間的所有素數

2021-12-24 09:17:44 字數 3687 閱讀 8203

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請無視。首先聖版 三角,你沒有說明具體的牌意權,我們按照過去 現在 未來 來幫你解讀。過去戰車逆 倒立的戰車告訴我你之前並不順利,你遇到問題並且沒有辦法很好的解決,導致事業不能繼續前進。現在塔逆 在這裡,我們可以看出你對現在的...