我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
注意,是第n个素数到第m个素数之间的所有的素数,并不是n和m之间的所有的素数。
题目来源中国大学慕课翁恺老师的零基础Java学习
翁恺老师是我的男神啊,说话温文尔雅,一直在鼓励大家,跟大家安利一下老师。
拿到这道题的第一步把大的题划分成小部分,关键字有素数,我就先把判断一个数是不是素数的程序写出来,
boolean IsPrime=true; for (int i = 2; i <= n / 2; i++) { if (n % i == 0){ IsPrime = false; break; } }
这是一个小程序,其中变量有输入n,判断结果用IsPrime来表示。
解决了一小步,接下来是求第m个素数,所以就需要遍历一些数,并且需要一个数来记录素数的位数,用count来表示,以下就是求得的前number2个素数并把它表示出来。
for(n=2;count<number2;n++) { boolean IsPrime=true; for (int i = 2; i <= n / 2; i++) { if (n % i == 0){ IsPrime = false; break; } } if (IsPrime) { count++; System.out.println(n + "是第" + conut + "个素数");
最后一步也就比较简单了,限定一下范围,在范围内进行加法就好了。下面是完整代码。
package PrimeNumber; import java.util.Scanner; public class PrimeNumber { public static void main(String[] args) { int n=0; int count=0; int sum=0; System.out.println("请输入数据:"); Scanner in =new Scanner(System.in); int number1= in.nextInt(); int number2= in.nextInt(); for(n=2;count<number2;n++) { boolean IsPrime=true; for (int i = 2; i <= n / 2; i++) { if (n % i == 0){ IsPrime = false; break; } } if (IsPrime) { count++; System.out.println(n + "是第" + conut + "个素数"); if (count>=number1) { sum=sum+n; } } } System.out.println(sum); } }
加油哦,顾漂亮!!!