#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(m?==?n)???//n循環(huán)結(jié)束后,如果m=n的話就輸出m
????????????printf("%d??",?m);
}
return?0;????
}
一直想不明白這句是為什么?if(m?==?n)
m==2?能勉強(qiáng)理解?
m==3?為什么?
外循環(huán)m=3時(shí)??for(n=2;?n<m;?n++)??是不是就等價(jià)于for(n=2;?n<3;?n++)
這時(shí)候n=2后?內(nèi)循環(huán)就應(yīng)該停止了啊,怎么實(shí)現(xiàn)的n==3的?
2023-02-23
外循環(huán)m=3時(shí)??
for
(n=2;?n<m;?n++)? 等價(jià)于
for
(n=2;?n<3;?n++)
這時(shí)候n++等于3時(shí) 不符合循環(huán)條件會(huì)跳出當(dāng)前內(nèi)循環(huán)。
但注意,此時(shí)n就是等于3了(n++自增導(dǎo)致的)
for循環(huán)的執(zhí)行順序是先n<m判斷,執(zhí)行語句,n++,再n<m判斷,執(zhí)行語句,n++
所以n=2(執(zhí)行語句)后,n++等于3,n<m條件不符合,跳出當(dāng)前內(nèi)循環(huán)。
再執(zhí)行? ? ? ? if
(m?==?n)???
????????????
printf
(
"%d??"
,?m);
所以能輸出素?cái)?shù)3.
后面的數(shù)字同理。
故? ? ? ?
? ? ? ? ? ? if
(m?==?n)???
????????????
printf
(
"%d??"
,?m);
是保證素?cái)?shù)自身一定能被輸出,前面內(nèi)循環(huán)語句是找出數(shù)字的能被整除的情況,跳出循環(huán)后m?==?n又限制這個(gè)因數(shù)只能是自身。
綜上,n<m和n<=m條件應(yīng)該均可。
2022-11-21
#include <stdio.h>
int main()
{
? ? int m ;
? ? for (m = 2; m <50; m++)? ? ? //for(m=2;m<=50;m++)
? ? {
? ? ? ? ;
? ??
? ? }
? ? printf("%d", m);
? ? return 0;
}
我試了一下上邊代碼,輸出的是50 //51
我是不是可以這樣理解? :
for循環(huán)時(shí)? 哪怕m<50==0? ? ? m++依然會(huì)運(yùn)算一次?。?/p>