简体   繁体   English

"从数组中找到所有素数"

[英]find all prime numbers from array

I want to create a program that will ask the user to input 5 integers using array and determine all the prime numbers entered.我想创建一个程序,要求用户使用数组输入 5 个整数并确定输入的所有素数。 But I have difficulty with it.但我有困难。 What seems to be the problem?似乎是什么问题? I use JCreator for this.我为此使用 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 ");
    }
}
}

You are checking the loop counters, not the values in the array.您正在检查循环计数器,而不是数组中的值。 Try something like尝试类似的东西

for (int j=2; j<array[i]; j++){
    if(array[I]%j==0){
            isPrime = false;
            break;
        }

I haven't tested this.我没有测试过这个。

UPDATE更新

To print out the results either print each on as it is found, or, copy the prime numbers into an output array and then print that when you have finished the checks.要打印结果,可以在找到时打印每个结果,或者将质数复制到输出数组中,然后在完成检查后打印。 The details will depend on the language you are using.详细信息将取决于您使用的语言。

Please note, you are not using a very efficient detection algorithm;请注意,您没有使用非常有效的检测算法; Google for a better one.谷歌搜索更好的。

You can check all integer numbers until root of the required number您可以检查所有整数,直到所需数字的根

Pseudo code:伪代码:

 for(i=2; i<sqrt(number);i++){
  if(number/i===0){
    //not prime number
  }
}

Find all prime numbers from the array.从数组中找出所有素数。

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

} }

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

Here is more efficient code finding prime number.这是查找素数的更有效的代码。 We only need to check the odd number up to the square root of N, assume the number is greater than 2.我们只需要检查直到 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;
    }

This is the simplest form of finding the prime numbers from the given array.这是从给定数组中查找素数的最简单形式。 We can also use scanner by assigning n instead of an array to check whether if it is a prime or non prime from the given input(commented in program).Hope this helps you..!!我们还可以通过分配 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);
   }
}

Since you have asked for 5 number explicitly, the code has hardcoded for 5 numbers由于您明确要求输入 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] + " ");
    }
  }
}

This is the simplest way to accept 'n' integers and display the prime and non prime numbers present in that array.这是接受“n”个整数并显示该数组中存在的素数和非素数的最简单方法。

import java.util.Scanner;
// Author Dot-Coin
public class The_Prime {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter the size of the array");
        int size=sc.nextInt();
        int Primer[]=new int [size];
        int Non_Primer[]=new int [size];
        int Numbers[]=new int [size];
        int counter=0;int j=0,k=0,m=0,n=0;
        System.out.println("Enter the numbers ");
        for(int i=0;i<size;i++)
            Numbers[i]=sc.nextInt();
        for(int i=0;i<size;i++)
        {
            if(Numbers[i]==1||Numbers[i]==0)
            {
                continue;
            }
            
                for(n=1;n<=Numbers[i];n++)
                    {
                    if(Numbers[i]%n==0)
                        counter++;
                    }
                if(counter>2)
                {
                    Non_Primer[k]=Numbers[i];k++;counter=0;continue;
                }
                if(counter==2)
                {
                    Primer[m]=Numbers[i];m++;counter=0;
                }
            }
         System.out.println("The prime numbers are");
         for(k=0;k<Primer.length;k++)
                {
                    if(Primer[k]==0)
                        {
                        j++;continue;
                        }
                    else
                    System.out.println(Primer[k]);
                }
            if(j==Primer.length)
                System.out.println("Null");j=0;
            System.out.println("The Non prime numbers are ");
        for( k=0;k<Non_Primer.length;k++)
        {
            if(Non_Primer[k]==0)
                {
                j++;continue;
                }
            System.out.println(Non_Primer[k]);
        }
        if(j==Non_Primer.length)
            System.out.println("Null");
    }}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM