我想创建一个程序,要求用户使用数组输入5个整数,并确定输入的所有素数。但我有困难。什么似乎是问题?我使用JCreator。
import java.util.Scanner;
public class PrimeNumbers{
public static void main (String[] args){
int[] array = new int [5];
Scanner in = new Scanner (System.in);
System.out.println("Enter the elements of the array: ");
for(int i=0; i<5; i++)
{
array[i] = in.nextInt();
}
//loop through the numbers one by one
for(int i=0; i<array.length; i++){
boolean isPrime = true;
//check to see if the numbers are prime
for (int j=2; j<i; j++){
if(i%j==0){
isPrime = false;
break;
}
}
//print the number
if(isPrime)
System.out.println(i + " are the prime numbers in the array ");
}
}
}
答案 0 :(得分:1)
您可以检查所有整数,直到所需数字的根
for(i=2; i<sqrt(number);i++){
if(number/i===0){
//not prime number
}
}
答案 1 :(得分:1)
从数组中找出所有素数。
package com.myfirstproject;
public class array_Uni_work {
public static void main(String[] args) {
int[] array = {6,48,47,7 , 98,51,87,99,2,0,1,191,157};
// loop through the numbers one by one
for (int i = 0; i < array.length; i++) {
boolean isPrime = true;
if (array[i] == 1)
isPrime = false;
else {
// check to see if the numbers are prime
for (int j = 2; j <= array[i] / 2; j++) {
if (array[i] % j == 0) {
isPrime = false;
break;
}
}
}
// print the number
if (isPrime){
if (array[i] == 0){}
else {
System.out.print(array[i] + " , ");
}
}}
System.out.println(" Are the prime number in the array ");
}
}
答案 2 :(得分:0)
您正在检查循环计数器,而不是数组中的值。尝试像
这样的东西for (int j=2; j<array[i]; j++){
if(array[I]%j==0){
isPrime = false;
break;
}
我没有测试过这个。
<强>更新强>
要打印出结果,请按原样打印每个结果,或者将素数复制到输出数组中,然后在完成检查后打印。详细信息取决于您使用的语言。
请注意,您没有使用非常有效的检测算法;谷歌是一个更好的。
答案 3 :(得分:0)
public static void main(String[] args) {
int[] array = new int[5];
Scanner in = new Scanner(System.in);
System.out.println("Enter the elements of the array: ");
for (int i = 0; i < 5; i++) {
array[i] = in.nextInt();
}
// loop through the numbers one by one
for (int i = 0; i < array.length; i++) {
boolean isPrime = true;
if (array[i] == 1)
isPrime = false;
else {
// check to see if the numbers are prime
for (int j = 2; j <= array[i] / 2; j++) {
if (array[i] % j == 0) {
isPrime = false;
break;
}
}
}
// print the number
if (isPrime)
System.out.println(array[i] + " is a prime number in the array ");
}
}
答案 4 :(得分:0)
这是更有效的代码查找素数。我们只需要检查奇数到N的平方根,假设数字大于2.
boolean isPrime(int n) {
//check if n is a multiple of 2
if (n%2==0) return false;
//if not, then just check the odds
for(int i=3;i*i<=n;i+=2) {
if(n%i==0)
return false;
}
return true;
}
答案 5 :(得分:0)
这是从给定数组中查找素数的最简单形式。我们也可以使用扫描器,通过分配n而不是数组来检查给定输入(在程序中进行了注释)它是素数还是非素数。希望这对您有帮助。
public static void main(String[] arg) {
int a[]= {1,2,3,4,5,6,7,8,9,10}; //int n=0 or n=values
int num =0;
String primeNumbers = "";
for (int i = 0; i <= a.length; i++) /*change a.length to n*/
{
int counter=0;
for(num =i; num>=1; num--)
{
if(i%num==0)
{
counter = counter + 1;
}
}
if (counter ==2)
{
//Appended the Prime number to the String
primeNumbers = primeNumbers + i + " ";
}
}
System.out.println("Prime numbers from given array :");
System.out.println(primeNumbers);
}
}
答案 6 :(得分:0)
由于您明确要求输入 5 个数字,因此代码已硬编码为 5 个数字
import java.util.Scanner;
public class PracticeTest {
public static void main(String args[]) {
int arr[] = new int[5];
Scanner sc = new Scanner(System.in);
System.out.println("Enter 5 numbers");
for (int i = 0; i < 5; i++) {
arr[i] = sc.nextInt();
}
checkPrimeNumbers(arr);
}
public static void checkPrimeNumbers(int arr[]) {
loop1:
for (int j = 0; j < arr.length; j++) {
loop2:
for (int i = 2; i < arr[j]; i++) {
if (arr[j] % i == 0) {
continue loop1;
}
}
System.out.print(arr[j] + " ");
}
}
}