前幾天一個朋友讓幫忙寫一個求100-200之間素數,並求和的程序,記錄一下。
(素數就是質數,就是只能被1整除,不能被其他數整除的數)
java程序為:
public static void main(String[] args) { //程序打印出從100到200的所有素數並求和; int Sum = 0; for (int i = 100; i <= 200; i++) { boolean flag = true; /*內嵌了一個for循環,作用是用100到200之間的每一個數,從2一直除到它本身,如果等於0的話,那么就不屬於素數,就把flag置為false*/ for (int j = 2; j <= i - 1; j++) { if (i % j == 0) flag = false; } if (flag) {//只有當flag為true的時候,才會這里走。 Sum = Sum + i;//每一次循環都讓sum加上這個素數i,然后重新賦值給sum System.out.print(i+","); } } System.out.println("所有素數總和為:"+Sum); }
網友寫的版本為:
#include <iostream.h> //程序打印出從100到200的所有素數並求和; void main() { cout<<"100-200之間的所有素數為:"<<endl; /*這是提示語句,沒有實際作用;*/ int k=0; //在主程序中定義了一個整型變量k,用來存放下載所有質數的和,默認值是0; /*下面的是雙FOR循環,外面的循環從100開始,以步進為1,遞增到200,判斷這之間的每一個數是否為質數*/ for (int i=100;i<=200;i++) { int m=0;/*m是計數器,它的作用很重要,每循環一次,它要自動清零,做好下次計數的准備*/ /*內嵌了一個for循環,作用是用100到200之間的每一個數,從1一直除到它本身,比如第一個數100,從1開始除,一直 除到它本身*/ for (int a=1;a<=i;a++) { /*每除一次,如果余數為0,那么計數器m的值自增加1*/ if(i%a==0) m++; } /*經過了一次循環,結果出來了,如果m的值為2,這就說明了這個數只能被1和它本身整除, 這個就是質量數了.接着把這個數打印出來,后面還根了一個k+=i;語句,這是把每一個得出的質數 自加,並賦給k本身,以便求出這些質數的和*/ if(m==2){ cout<<i<<" ";k+=i;} } cout<<endl; cout<<"這些素數的和為:"<<k<<endl;/*這里就得出了所有求得的質數的和了,也就是k最終的值*/ }
所有的質數為:101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199
所有素數總和為:3167