亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

幫我解答一下,謝謝!

for的父循環中m=5的時候,自循環規定了n<m,那此時n最大只能是4,子循環執行完了,也沒有滿足m=n,為何結果還有5。另外我在子循環里面加上n<=m,結果也是一樣的。哪個正確?

@Perona


正在回答

6 回答

首先了解一下素數的概念。素數是只能除以1和自身的數。

這里2個for循環,外面的for循環是遍歷0-50這幾個數的,里面的for是看m除了自己還能不能被整除。

外面的for從2開始算m是不是素數,n是除數,除數從2開始,如果m除以2余數為0,說明m能被2整除,則m不是素數,里面for循環break,繼續算外面的for循環m+1。

第一次循環:m=2,

????????子循環:(因為這里n=2,n<m,不做循環),跳出,執行if(m == n) 輸出2

第二次循環:m=3,

? ? ? ? ?子循環:n=2,m%2=1

??????????重點是(n++)這個,n++是什么呢?是自增1。本次循環中先取到n的值是2,但是循環結束后,n是不 ? ? ? ? ? 是就自增了1,執行if(m == n)?輸出3

第三次循環:m=4,

? ? ? ? ?子循環:n=2,m%2=0,不符合。

第三次循環:m=5,

? ? ? ? ?子循環:n=2,m%2=1,跳出?

????????這里就是你想要知道的答應,當n循環到4的時候,跳出循環,n自增了1,執行if(m == n)?輸出5。

......(接下來的循環自行腦補)

子循環為嘛要判n>m,因為素數是只能除以1和自身的數。那么除數和被除數相等是沒有意義的。所以應該是n>m,而不是n>=m。

你看下,還有什么不懂的說說唄。

PS:你是第一個@我的人,我有種莫名的感動?。√x謝你,童鞋,你真可耐,么么噠~~~

7 回復 有任何疑惑可以回復我~
#1

小玖so 提問者

非常感謝!
2015-08-11 回復 有任何疑惑可以回復我~

明白了,受教

0 回復 有任何疑惑可以回復我~

666

0 回復 有任何疑惑可以回復我~

首先M=2 N=2 余數為0 跳出循環 然后 M++ ?M=3 N=2 余數為1不跳 N<M N++ N=3 余數為0則跳出循環 以此類推。這才是正解,按樓主的理解,9就不行了,9可以被3整除,不是素數。

0 回復 有任何疑惑可以回復我~
#1

Perona

你再看一遍吧。當m=9時,其實跟當m=4的原理是一樣滴。就是這一行代碼 if(m%n == 0 ) break; 而且循環剛開始是m=2,n=2,執行的是這行代碼 if(m == n)
2015-09-17 回復 有任何疑惑可以回復我~

話說一開始就被素數的概念給砸暈了。。。

看了老半天覺得應該得用模運算,就是沒敢下手,其實就是兩行代碼的事。。。

除余運算,看來得重視了

多謝樓主,提點啦

0 回復 有任何疑惑可以回復我~

判斷這個,只判斷第一個數字的,比如第一次循環的m=2 n=2那么這不就是相等情況了嗎?你把整個運算順序分析一下

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21532    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

幫我解答一下,謝謝!

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號