获取素数 [英] Getting the prime numbers

查看:57
本文介绍了获取素数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请看下面的代码

public class Prime
{
    public static void main(String[]args)
    {
        int i = 2; 
        int counter = 0;

        while(true)
        {


            if(counter==6)//Count still 6
            {
                break;
            }
            else
            {
                if(getPrimes(i)==true)
                {

                    i++;
                    counter++;
                    System.out.println("Counter: "+counter);
                }
                else
                {
                    System.out.println("No");
                }
            }
        }
    }

    static boolean getPrimes(int num)
    {

        boolean result = false;
        int i = 2;

            while(true)
            {
                if((num%i) != 0) //if the number cannot be divided by any other number (except 1 and it self) it is prime
                {
                    result = true;
                    System.out.println(num);
                    System.out.println("I is: "+i);
                    i=2;
                    break;
                }

                else //Not a prime. Repeat the process
                {
                    result = false;
                    i++;
                }
            }

            return result;
     }       
}

在这里,我试图将所有素数都设为0-6.这是从一个很大的数中获得数千个质数的测试用例.但是,它并没有显示唯一的质数,而是显示了每个数字!

In here, I am trying to get all the prime numbers between 0-6. This is the test case to get thousands of prime numbers from a really big number. However, it is not showing the only primes, it is showing each and every number!

我在这里做什么错了?请帮忙!

What am I doing here wrong? Please help!

推荐答案

我想我找到了解决方案.至少,我找到了所需的答案.这是我的答案

I guess I found the solution. At least, I found the answer I need. Here is my answer

import java.math.BigInteger;

public class Problem7
{
    public static void main(String[]args)
    {
        int i = 0;
        int counter = 0;

        while(true)
        {

            if(i>6)
            {
                break;
            }

            if(i>1)
            {
                String str = String.valueOf(i);

                if (new BigInteger(str).isProbablePrime(i/2))
                {
                    System.out.println(str);
                     counter++;
                }
            }
            i++;

        }

    }
}

我想这是最简单的方法...

I guess this is the easiest way...

这篇关于获取素数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆