输出100-200之间的所有素数并求和程序

前几天一个朋友让帮忙写一个求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

posted @ 2013-10-28 10:03  Andye  阅读(24565)  评论(5编辑  收藏  举报