素数2.0

前几天写了一个查找素数的程序,现在写一个计算指定素数的和。例如2为第一个素数,3为第二个素数,现在需要求第n到m个素数的和。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package sum_PrimeNumber;
import java.util.Scanner;
public class sum_PrimeNumber {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int x=0;
int y=0;
int i=0;
int sum=0;
for (x=2;x<10000;x++)
{
int flag=1;
for (y=2;y<x;y++)
{
if(x%y==0)
{
flag=0;
break;
}
}
if (flag==1)
{
i++;
if(i>=n)
{
if(i<=m)
{
sum+=x;
}
}
}
}
//System.out.println(n+" "+m);
System.out.println(sum);
}
}

  • 1、核心的素数算法是一样的,可以默认一个数是素数,即给flag立初值为1。之后用2到该数本身取余,一旦出现余为0,即该数不是素数,则flag置为0,跳出循环,检查下一个数。若flag一直为1,则说明一直没出现可以与该数整除的数,该数就为素数。
  • 2、这段代码需要实现指定序号的一些素数的和,所以下一步就需要为每一个素数确定一个序号。这个序号订位i,初值为0。当找到一个素数时,这个i+1,但i满足所给的范围时,将素数相加。
  • 3、下图为流程图:
    enter description here