1樓:網友
你把if(l>=j+1)改為if(l==j+1)就好理解了。
for(l=3;l<=j;l++)
if(i%l==0)break;
如果之間沒有能被整除的數,這陵坦激時迴圈就會走到頭,由於l++,l變成信豎了j+1。尺襪。
if(l>=j+1)
cout《表示只列印素數,如果不是素數,這時l不可能》=j+1的,因為if(i%l==0)break跳出了。
2樓:匿名使用者
當然那,因為你每乙個都是迴圈到j結果的,for(l=3;l<=j;l++)這一條語句結束後,l應該等於j+1,才會跳出l<=j。
for(l=3;l<=j;l++)
if(i%l==0)break; 這條是判斷i 能否被l整除,能就跳出for(l=3;l《早基=j;l++)迴圈。
if(l>=j+1)判斷這時l是否》=j=i,如果昌睜正是就說明不是用break;跳出來的,而是for(l=3;l<=j;l++)迴圈結束了才執行這一句的,就說明i是乙個素數。就要輸出耐悔,不是則判斷下乙個i .
coutif(k%5==0)cout<<'n';}每輸出5個換一行。
c++求素數
3樓:網友
第二個空應該填 i==j;
因為j那個迴圈中 每次迴圈都是判斷先執行 判斷j<=i-1;然後執行i%j==0判斷 如果是正確 則從迴圈結束 執行下乙個語句 也就是判斷 第二個空格里的內容 ;如果是錯誤 則j++繼續判斷j<=i-1繼續迴圈;
所以說j迴圈結束的情況有兩種 一種是判斷 i%j==0這就不是素數 不需要輸出(此時的j還有一種情況是 判斷到最後乙個數 判斷 i%j==0仍是錯誤 結束迴圈 這就是素數 要輸出(素數的話判定一直會是錯誤,也就是說最後一次迴圈應該是 j=i-1,判斷i%j==0錯誤 j++之後j=i 判斷j<=i-1錯誤 j結束迴圈 迴圈結果是j=i )
而區分這兩種情況就得 在第二個空裡填 i==j
4樓:20夏天
是i==j
你自己在去敲一下,看結果。
用C語言求100 200之間的素數
對100到200之間的數,逐一判斷是否為素數,如果是則輸出即可。判斷素數方法很多,以數學方法判斷為例,如下 include int is prime int n 判斷n是否為素數。int main 錯誤原因 迴圈結束之後,沒有把s重新置為1,所以在判斷完第2個素數之後第乙個非素數後就不再輸出了。例子...
程式設計求1 2019間的所有素數,並把結果輸出到檔案中儲存起來
include include int prime int n int i if n 2 return 0 for i 2 i sqrt n i if n i 0 return 0 return 1 int main int i file fp if fp fopen d 0.txt w null ...
C 中所有的typename都可以替換為class嗎
1,一般情況下typename和class可以互換。2,但是當需要表示某識別符號是型別的時候用只能用typename而不能用class。當要獲得類的成員型別時,必須用typename比如template class myclass 有了typeanme,subtype就被當成了t中定義的乙個型別 如...