悬赏100。。跪求Java 小编程。求2~n之间所有的素数,n由键盘输入。 不用自带的函数,需自己

2024-11-26 10:42:21
推荐回答(5个)
回答1:

用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以内的素数

回答2:

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个素数

回答3:

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);
}

输入你自己弄吧!

回答4:

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); 



}

回答5:

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 + " ");
}
}
}
}