8.将程序补充完整:求50以内的质数。public class Test2{ publicstaticvoid main(String args[]) { int i, n; for(n=2;n<=50 ; n++){ for(i=2; i<=n/2 ;i++){ if(__[填空1]_) break; }if(i>____[填空2]___) System. out.println(n+"是质数");) }}
时间: 2023-12-03 22:01:59 浏览: 112
将程序补充完整:
```java
public class Test2 {
public static void main(String args[]) {
int i, n;
for(n=2;n<=50 ; n++){
for(i=2; i<=n/2 ;i++){
if(n%i==0) break;
}
if(i>n/2) System.out.println(n+"是质数");
}
}
}
```
解释:这段程序是求50以内的质数。对于每个待判断的数n,从2到n/2遍历所有可能的因数,如果找到了n的因数,则n不是质数,退出内层循环。如果内层循环执行完毕,说明n是质数,输出n。
相关问题
1.程序功能:从键盘输入一个正整数n,计算并输出n以内的全部素数。 import java.util.Scanner; public class Test{ public static void main(String[] args) { Scanner sc = new Scanner (System. in); int n ; int i,j; System.out.printin(“清輸入一个整数:"); n = sc.nextDouble (); System.out.print(n+“以内的素数有:”); for(j=2;j<=n;j++6 for (i=2;i‹=j/2;i++) { if(j1==8){ continue; } if(i<i/2) { System.out.print (j+" "); // Error1 // Error2 // Error3 } } } 2
这段代码中有一些错误,需要进行修正:
1. 第8行应该使用`nextInt()`方法获取一个整数,而不是`nextDouble()`方法获取一个双精度浮点数。
2. 第9行应该将变量`j`的初值修改为`2`,而不是`6`。
3. 第14行应该将`j%2==0`改为`j%i==0`,表示判断`j`是否能被`i`整除。
4. 第15行应该将`if(j1==8)`改为`if(j==2)`,因为2是素数,不需要进行后续的判断。
5. 第16行应该将`if(i<i/2)`改为`if(i<=j/2)`,表示从2到j/2枚举i。
修正后的代码如下:
```
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
int i,j;
System.out.print("清输入一个整数:");
n = sc.nextInt();
System.out.print(n+"以内的素数有:");
for(j=2;j<=n;j++) {
for (i=2;i<=j/2;i++) {
if(j%i==0){
break;
}
if(i==j/2) {
System.out.print(j+" ");
}
if(j==2){
System.out.print(j+" ");
break;
}
}
}
}
}
```
解释这段代码package question7; import java.io.DataOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.Random; public class Test { public static void main(String args[]){ Test test=new Test(); Scanner input=new Scanner(System.in); String s1=new String(); s1=input.nextLine(); String[] s2 = s1.split(" "); int[] l=new int[s2.length]; for(int i=0 ; i<s2.length;i++){ l[i]=Integer.parseInt(s2[i]); } test.write("test.txt", l); int[] readlist=test.read("test.txt",l); isPrime isprime=new isPrime(readlist); for(int i=1;i<=10;i++){ new Thread(isprime).start(); } try { Thread.sleep(1000); //1000 毫秒,也就是1秒. } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } Set<Integer> set=new HashSet(); set=isprime.getSet(); System.out.println("素数set"+set); System.out.println("输入查询数字"); int num=input.nextInt(); if(set.contains(num)){ System.out.println(num+"是素数"); } else System.out.println(num+"不是是素数"); } public void write(String filename,int a[]){ File file = new File(filename); try { PrintWriter output=new PrintWriter(file); for(int i=0;i<a.length;i++){ output.print(a[i]+" "); } output.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public int[] read(String filename,int a[]){ File file=new File(filename); try { Scanner input=new Scanner(file); int i=0; while(input.hasNext()){ a[i]=input.nextInt(); i++; } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return a; } }
这段代码是一个 Java 程序,主要功能是读取用户输入的一串整数,将其写入文件 test.txt,然后又从这个文件中读取整数列表,并查找出其中的素数并存储在一个 HashSet 中,最后判断用户输入的数字是否为素数。具体实现包括定义了一个 isPrime 类用于判断一个数字是否为素数,使用了多线程来处理多个数字的判断,使用了 HashSet 来存储素数列表。
阅读全文