1樓:網友
以下是根據質數的定義寫的程式,先顯示範圍內所有的質數,最後顯示的是質數和。
tmpn=0
for i = 2 to 100
tmpc=.f.
for j = 2 to i
if int(i/j)=i/j .and. i<>jtmpc=.t.
endifnext
if tmpc=.f.
itmpn=tmpn+i
endifnext
tmpn
編寫程式求2到100以內所有質數
2樓:網友
除二外素數是奇數,所以先輸出2從3開始步長為2易知如果乙個合數i能被在[[sqrt(i)],i)中的數整除,那麼除得的商一定在(1,[sqrt(i)]]範圍內,唯一分解定理:每個大於1的正整數均可分解為有限個素數的積。
上面的**應該改成k<=sqrt(i)
3樓:網友
因為乙個數從1迴圈到他本身的話,後面的數是前面的數的倍數,為了提高效率,有人研究出來只要計算到乙個數的根號就可以了。。
例如9,從1迴圈到3就可以找到除斷的數了。
4樓:蜜蜂小玉公尺
乙個數a,如能分成兩個數a=b*c
則b或c>=sqrt(a),所以只要判斷倒sqrt(a)即可。
不信你自己找幾個數試試。
求vfp程式設計高手解釋程式 輸出3-100之間的所有素數
5樓:
set talk off
clearfor 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
endifendfor
if i>n &&只有i的值從2 3 ..到n 取一遍之後,退出迴圈時,i才滿足大於n,說明沒有中途退出迴圈,也就是說在2---n範圍內沒有找到能整除m的數,那就輸出 這個數,說明這個數是素數。
mendif
endfor
首先你這個程式第5行有錯誤,我已經改過了。程式用文字解釋起來太麻煩了,不知你看懂沒?
6樓:網友
首先,說一下程式的基本思想:因為素數(除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的迴圈判斷。
vb程式 求100內所有素數的和。
7樓:網友
dim m as integer
dim i as integer
dim sum as integer
sum = 0
for m = 2 to 100
for i = 2 to m - 1 '判斷是否是素數。
if m mod i = 0 then
exit for
end if
next i
if i = m then '如果是,相加。
sum = sum + m
end if
next m
print sum
另外樓主的**有誤,按你那個思路,**如下。
dim sum as integer
for m = 2 to 100
i = 2do while m mod i <>0i = i + 1
loopif i = m then sum = sum + mnext m
print s
8樓:中學知識快遞
dim s as integer
for m=2 to100
do while m mod i<>0
i=i+1loop
if i=m then s=s+m
next i
print s
大概不需要解釋吧。
9樓:丶丿灬夏天
if i =m 那裡的i 是2 to m-1。因此語句是錯誤的。
vfp 求出3~200之間的所有素數
10樓:卻彤雲
clear
"3到200之間的素數為:"
for i=3 to 200
x=0for j=2 to i-1
if i/j=int(i/j)
x=1endif
endfor
if x=0
alltrim(str(i))+" "
endifendfor
這夠簡單吧。
linux 編寫程式求出100以內質數
11樓:網友
#include
int main()
if(k==i)printf("%d",i);/*當k=i時表明i不存在除1和本身以外因子,因而它是素數,打出來*/}}
用c 編寫程式「100以內能被3整除的所有數的和」,急
int fun return sum 100以內 抄的內被襲3真出的 bai數 就是 duzhi3,dao6,9,12,15.unclude using namespace std int main int i,sum sum 0 for i 3 sum 100 i 3 sum i cout sum...
用c語言編寫程式,求s1,用C語言編寫程式,求S11223nn1,直到最後一項的絕對值小於
只求從bai第二項起的浮點du 和,把第一項1作為初值zhi直接賦給和dao變數s。如內下 include stdio.h int main int argc,char argv 執行結果如下 最後一項的絕對值小於10的幾次方呀 最後問題顯示沒顯示完整 include stdio.h double ...
用VFP編寫程式,從成績表 成績 dbf 中查詢學號為 20001 學生的課程號為 C02 的課程成績
use 成績 loca for 學號 2001 and 課程號 c02 if eof 沒有找到 return endif a 課程成績 if a 90 優秀 else if a 80 良好 else if a 70 中等 else if a 60 及格 else 不及格 endif endif en...