前几天写了一个查找素数的程序,现在写一个计算指定素数的和。例如2为第一个素数,3为第二个素数,现在需要求第n到m个素数的和。
代码:
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、下图为流程图:
