java - 在 JAVA 中打印数组中的素数
问题描述
我想创建一个程序,要求用户使用数组输入 5 个整数并确定输入的所有素数。但我有困难。似乎是什么问题?我为此使用 JCreator。
package arrays;
import java.util.Scanner;
public class Examples {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
System.out.println("Total numbers : ");
int n = sc.nextInt();
boolean isPrime =true;
int result =0;
System.out.println("Enter the Numbers : ");
int [] numbers = new int[n];
for(int i=0;i<n;i++) {
numbers[i]=sc.nextInt();
}
for(int i=0;i<n;i++) {
for(int j=2;j*j<numbers[i];j++) {
if(numbers[i]%j ==0) {
isPrime =false ;
break;
}
}
}
if(isPrime) {
System.out.println("The Prime Numbers : " +numbers[i]);
}
}
}
解决方案
你应该把isPrime()
里面的外循环如下 -
System.out.println("The Prime Numbers : ");
for(int i=0;i<n;i++) {
isPrime =true; // setting it to true before checking for every numbers
for(int j=2;j*j<numbers[i];j++) {
if(numbers[i]%j ==0) {
isPrime =false ; // will become false only when not an prime
break;
}
}
// isPrime will remain true if numbers[i] is a prime number. So print the prime number
if(isPrime) {
System.out.println(numbers[i]+" ");
}
}
您的代码几乎没有错误-
if(isPrime) {
System.out.println("The Prime Numbers : " +numbers[i]);
}
首先,上面的代码不起作用,因为范围i
仅限于for()
循环。即使i
在 for 循环之外声明,本应打印的数字也将始终是最后一个数字(如果用户输入的数字中存在素数)。那不是我们想要的。
因此,只要您验证一个数字不是素数,就打印这些数字。完成每个内部循环后,检查布尔值isPrime
,如果它是真的,我们知道我们当前正在检查的数字(numbers[i]
)肯定是素数。所以打印数字本身。
希望这可以帮助 !
推荐阅读
- android - 工具栏 XML 布局在哪里?
- intellij-idea - sbt 工具窗口不可用
- azure-devops - Azure Devops Pipeline 在一个订阅中失败,但在另一个订阅中有效
- windows - 如何在 ID 上获得没有地址的代码签名证书?
- node.js - 在 Mongodb 的嵌套无模式数组中搜索
- sql - 为每条记录运行子查询?
- reactjs - 无法从 React 中使用 Link Tag 的组件更新状态
- r - R - 关于使用 metafor 包缩小森林图的快速问题;太宽
- python - FileNotFound 错误下载 roberta-model 句子转换器
- reactjs - 如何在选择第一个选择的第一组值时显示?(有2种不同的选择)