求大神解答
#include <stdio.h>
int main()
{
? ? int m, n;
? ? for(m=2; m<=50; m++)
? ? {
for(n=2; n<=m; n++)
? ? ? ? {
? ? ? ? ? ? if(m%n==0)? ? ? ?//什么條件下跳出當(dāng)前循環(huán)
? ? ? ? ? ? ? break;? ? ? ? ? ? ? ? ?//這里應(yīng)該退出當(dāng)前循環(huán)了
}
? ? ? ? if(n == m)? ?//n循環(huán)結(jié)束后,如果m=n的話(huà)就輸出m
? ? ? ? ? ? printf("%d\n", n);
}
return 0;? ??
}
n<=m,也是正確結(jié)果,為什么呢?不應(yīng)該所有數(shù)都滿(mǎn)足么?
2022-03-20
以外循環(huán)m==5為例,當(dāng)n==4時(shí),執(zhí)行循環(huán)體,接著執(zhí)行n++得到n==5,此時(shí)
此時(shí),對(duì)于n<m : 滿(mǎn)足不了n<m,跳出內(nèi)循環(huán),執(zhí)行if(n == m),說(shuō)明5除了1以外只能被5整除,為素?cái)?shù);
? ? ? ? ? 對(duì)于n<=m:滿(mǎn)足n==m,執(zhí)行內(nèi)循環(huán)體,由于m%n=0,執(zhí)行break,同樣也跳出了內(nèi)循環(huán),執(zhí)行if(n == m),說(shuō)明5除了1以外只能被5整除,為素?cái)?shù);
綜上所述,兩種情況得到的結(jié)果都是相同的,且均是正確的,如有出錯(cuò),感謝各位指正。
2021-11-13
for(n=2; n<=m; n++)這里錯(cuò)了,n<m.不然?if(n == m)用來(lái)干嘛