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

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

為什么這樣做可以得出素數?原理是什么不太理解

int m, n;

? ? for(m=2; m<=50; m++)

? ? {

for(n=2; n<m; n++)

? ? ? ? {

? ? ? ? ? ? if(? ? m%n==0? ?)? ? ? ?//什么條件下跳出當前循環

? ? ? ? ? ? ?break;? ? ? ? ? ? ? ? //這里應該退出當前循環了

}

? ? ? ? if(m == n)? ?//n循環結束后,如果m=n的話就輸出m

? ? ? ? ? ? printf("%d? ", m);

}

請問這樣的原理是什么?我不太理解


正在回答

7 回答

意思就是當m為5的時候,n從2到4全部走一遍,m%n只要不為0,就代表m可以被其他數除,就不是素數

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

if()的定義 ?不等于0時候不執行if的內容 n就一直加 ? 加到n<m 不成立停止 或者到符合if定義執行if(我是這么理解的)

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

超優秀

理解都能理解,就是不知道這么理解到底對不對,還是這么理解,,,是不是因為之前的m=2,n=2,所以兩個可以相等的,,,啊啊啊啊啊啊 ,整不明白,睡不著覺啊,
2020-03-30 回復 有任何疑惑可以回復我~

樓上在說什么東西呀,亂七八糟的。素數就是除了1和其本身之外不能被其他數整除的數。第一個for循環是外循環,走到50.第二個for循環是內循環,如果整除了直接跳出循環(不是素數),如果沒有的話一直到n==m循環條件不滿足,內循環終止。再根據if(m == n)判斷是不是走完了整個循環(素數),而不是中間跳出的。

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

慕尼黑9073084

請問一下if(m==n)為什么可以判斷是否走完了整個循環,又是怎么判斷不是從中間跳出的?
2019-08-24 回復 有任何疑惑可以回復我~
#2

小小疾飛 回復 慕尼黑9073084

內循環就是走到m的當前值,如果沒提前跳出循環,那么n就等于m,那么m就是素數了。
2019-08-24 回復 有任何疑惑可以回復我~
#3

慕尼黑9073084 回復 小小疾飛

哦哦哦懂了懂了,謝謝!
2019-08-28 回復 有任何疑惑可以回復我~
#4

qq_慕瓜0528938 回復 小小疾飛

謝謝你,看你的解釋我也看明白了。
2019-08-31 回復 有任何疑惑可以回復我~
#5

小小疾飛 回復 qq_慕瓜0528938

嗯嗯 祝學習順利
2019-08-31 回復 有任何疑惑可以回復我~
#6

超優秀 回復 小小疾飛

n不是小于m嗎,怎么會走到當前的值
2020-03-30 回復 有任何疑惑可以回復我~
查看4條回復

然后m等于6時,n=2,此時6%2==0,跳出循環,但是m不==n(6不==2)所以沒有被打印,然后下一個

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

哦我明白了,是不是m一直等于5,然后n依次等于2,3,4,始終不能使m%n==0,直到n等于5時,因為n不<m導致跳出循環了,此時m=5,n=5,就被打印了

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

慕桂英1572852

開竅了
2019-08-04 回復 有任何疑惑可以回復我~

是不是說5%2不等于0并不會退出循壞,而是把n++然后再循環直到有一次m不<0或者m==n時才跳出循環?

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

就比如說,m=5時,進入第一個循環:n=2,n<m(2<5)符合要求,進入下一層if m%n。m%n就是5%2不等于0,不符合要求,那這個循環就結束了,進入if(m==n),這時5不等于2不符合要求,5就沒有被打印,那這個循環也結束了,回到最開始,5就沒有被打印出來啊。為什么結果卻有一個5

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

舉報

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

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

進入課程

為什么這樣做可以得出素數?原理是什么不太理解

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

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

幫助反饋 APP下載

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

公眾號

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