【问题标题】:Storing my prime generator into an array将我的主要生成器存储到数组中
【发布时间】:2013-11-16 16:02:25
【问题描述】:

我现在正在学习数组。

我制作了这个简短的小程序。这是一个测试然后打印素数的循环。 特别是 1 到 100 之间的数字。

我想知道我是否可以使用我的循环并将每个素数存储到一个数组中。这是我的代码:

public class QC3PrimeNumbers
{

    public static void main (String[] args)
   {
      System.out.println ("Here are the prime numbers: ");

       for (int index = 2; index < 100; index++)
      {
         if (index%2 != 0 && index%3 !=0)
         System.out.print (index + " ");         
      }

   }
}

【问题讨论】:

  • 这不会生成素数。修正您的算法并回答您的问题,您可以使用ArrayList 来存储您找到的素数。
  • 注意:数组是固定大小的。
  • 你确定你的素数测试是正确的吗?素数是大于 1 的自然数,除了 1 和它自身之外没有正除数。大于 1 且不是素数的自然数称为合数。
  • index%5、index %7 以及所有 2 和 3 的非倍数呢?
  • Herpity derpity derp.你们是对的。所以我必须添加5和7?还有其他可整除的数吗?数组是固定的,但你不需要把它们填满,不是吗?

标签: java arrays loops


【解决方案1】:

如果你使用这个条件:if (index%2 != 0 &amp;&amp; index%3 !=0),那么它永远不会考虑 2 或 3 个素数。如果您将其更改为:

 if (index%2 != 0 && index%3 !=0 && index%5 !=0 && index%7 !=0)

它不会发现 2、3、5 或 7 是素数。

我更正了您的算法并决定使用ArrrayList 来存储素数列表,因为大小是动态的。否则,我们将首先必须找到您所在区域的素数数量以确定数组的大小,然后再执行相同的循环,除了这次将数字添加到数组中。

一旦你找到一个素数。使用nameOfArrayList.add(primeNumberFound);

_____________ __________________ _________________ _________________________________

用 ArrayList 来做

public class QC3PrimeNumbers
{

    public static void main (String[] args)
    {
        System.out.println ("Here are the prime numbers: ");

        // use a List to store your prime numbers (its size is dynamic)
        List<Integer> primeNums = new ArrayList<Integer>();

        for (int index = 2; index < 100; index++)
        {
            boolean isPrime = true; // initially true, and reset this every loop

            // for every number that can factor into the index number
            for (int i = 2; i < index; i++) 
                // if a number is found that factors into it, it's not prime
                if (index%i == 0) isPrime = false; 

            if (isPrime) // if this current index number is prime
            {
                System.out.print (index + " "); 
                primeNums.add(index); // add it to the List
            }
        }
    }
}

_____________ __________________ _________________ _________________________________

用一个普通的数组来做

以下是使用常规数组的方法(但不推荐):

public class QC3PrimeNumbers
{

    public static void main (String[] args)
    {
        System.out.println ("Here are the prime numbers: ");

        int numOfPrimes = 0; // counts the # of prime nums in your region

        // this loop will count up the number of prime numbers
        for (int index = 2; index < 100; index++)
        {
            boolean isPrime = true; // initially true, reset this every loop

            // for every number that can factor into the index number
            for (int i = 2; i < index; i++)
                // if a number is found that factors into it, it's not prime
                if (index % i == 0) isPrime = false;

            if (isPrime) // if this number is prime
                numOfPrimes++; // add it to the count
        }

        // array to hold the prime nums w/ size=how many prime nums we counted
        int[] primeNums = new int[numOfPrimes];

        int count = 0; // keep track of the position in the primeNums array

        for (int index = 2; index < 100; index++)
        {
            boolean isPrime = true; // initially true, reset this every loop

            // for every number that can factor into the index number
            for (int i = 2; i < index; i++)
                // if a number is found that factors into it, it's not prime
                if (index % i == 0) isPrime = false;

            if (isPrime) // if this number is prime
            {
                primeNums[count] = index; // add this prime num to the array
                count++; // change the array position tracker for next number
            }
        }

        for (int n : primeNums) // for every integer in primeNums array
           System.out.print(n + " "); // display that integer to the console
    }
}

【讨论】:

  • 编译器给了我两个指向列表和数组列表的“找不到符号”错误。我正在使用第一段代码。
  • @munchschair 尝试将 import java.util.ArrayList;import java.util.List; 添加到班级顶部。
  • 哎呀!现在它运行了!它活着
【解决方案2】:
import java.io.*;
import java.util.*;              
class numbers
{
public static void main(String args[])
{
    int[] prime=new int[20];
    int[] nonprime=new int[20];
    int count=0;
    int count1=0;`enter code here`
    try
        {
        InputStreamReader r=new InputStreamReader(System.in);  
        BufferedReader br=new BufferedReader(r);  
        System.out.println("enter n value");
        int n=Integer.parseInt(br.readLine());
        for(int i=1;i<n;i++)
        {   
            if(i%2!=0)
            {
                if(i%3!=0)
                    {
                    prime[count]=i;
                    count++;
                    }
            }
            else    
            {
            nonprime[count1]=i;
            count1++;
            }
        }
        System.out.println("prime");
        for(int m=0;m<count;m++)
        {
            System.out.println(prime[m]);
        }
        System.out.println("Non-prime");
        for(int k=0;k<count1;k++)
        {
            System.out.println(nonprime[k]);
        }
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}
}       

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多