為什么這樣做可以得出素數?原理是什么不太理解
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);
}
請問這樣的原理是什么?我不太理解
2019-08-12
意思就是當m為5的時候,n從2到4全部走一遍,m%n只要不為0,就代表m可以被其他數除,就不是素數
2019-07-23
if()的定義 ?不等于0時候不執行if的內容 n就一直加 ? 加到n<m 不成立停止 或者到符合if定義執行if(我是這么理解的)
2019-07-23
樓上在說什么東西呀,亂七八糟的。素數就是除了1和其本身之外不能被其他數整除的數。第一個for循環是外循環,走到50.第二個for循環是內循環,如果整除了直接跳出循環(不是素數),如果沒有的話一直到n==m循環條件不滿足,內循環終止。再根據if(m == n)判斷是不是走完了整個循環(素數),而不是中間跳出的。
2019-07-22
然后m等于6時,n=2,此時6%2==0,跳出循環,但是m不==n(6不==2)所以沒有被打印,然后下一個
2019-07-22
哦我明白了,是不是m一直等于5,然后n依次等于2,3,4,始終不能使m%n==0,直到n等于5時,因為n不<m導致跳出循環了,此時m=5,n=5,就被打印了
2019-07-22
是不是說5%2不等于0并不會退出循壞,而是把n++然后再循環直到有一次m不<0或者m==n時才跳出循環?
2019-07-22
就比如說,m=5時,進入第一個循環:n=2,n<m(2<5)符合要求,進入下一層if m%n。m%n就是5%2不等于0,不符合要求,那這個循環就結束了,進入if(m==n),這時5不等于2不符合要求,5就沒有被打印,那這個循環也結束了,回到最開始,5就沒有被打印出來啊。為什么結果卻有一個5