用Java8的stream的方式来编写
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个大于2的正整数");
if (scanner.hasNext())
{
IntStream.range(2,scanner.nextInt()+1)
.filter(outerInt-> !IntStream.range(2,outerInt)
.anyMatch(innerInt->outerInt%innerInt==0))
.forEach(System.out::println);
}
}
其中IntStream.range(a,b)表示取a到b-1之间的数列
filter是过滤的意思
里面的算法就是循环a到b-1之间的数列,取每个数字做以下过滤
每个数字去比较是否能和比自己小的任意数字整除(除本身外),只要有一个能被整除,那就不是素数,过滤掉
最后把剩下过滤后的数列打印出来,效果如下,求20以内的素数
import java.util.Scanner;
public class PrimeDemo {
public static void main(String[] args) {
System.out.println("请输入数字:<----程序将输出2~该数之间的素数--->");
Scanner input = new Scanner(System.in);//得到一个控制台输入的扫描器
int n = input.nextInt();//得到输入的数字
input.close();//用完扫描器后,进行关闭
int k = 0;//k用于保存素数的个数
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {//调用方法判断是否是素数
System.out.print(i + "\t");
k++;
if (k % 10 == 0) {//当素数的个数有10个时候,进行换行
System.out.println();//换行
}
}
}
System.out.println("\n2到"+n+"一共"+k+"个素数");
}
private static boolean isPrime(int n) {
// Math.sqrt(n)表示对数字进行开方运算,这样可以提高效率,较少for循环的次数
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {// 如果找到能整除的数字
return false;// 就返回不是素数
}
}
return true;//如果循环没有发现能被整除,那么就返回是素数
}
}
输出
请输入数字:<----程序将输出2~该数之间的素数--->
100
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
2到100一共25个素数
int n = 123;
System.out.println("输入: " + n);
outer: for (int i = 2; i < n; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
continue outer;
}
}
System.out.println(" " + i);
}
输入你自己弄吧!
class Sushu
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数数");
int n=sc.nextInt();
int j;
for (int i = 1; i <= n; i++)
{
for (j = 2; j < i; j++)
if (i % j== 0) break;
if(jcontinue;
else
System.out.print(i);
}
}
}
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
// TODO code application logic here
boolean f;
int n = 0;
Scanner in = new Scanner(System.in);
System.out.println("输入:");
n = in.nextInt();
for(int i = 2; i <=n; i++){
f = true;
for(int j = 2; j < i; j++){
if(i % j == 0){
f = false;
break;
}
}
if(f){
System.out.print(i + " ");
}
}
}
}