Thecrazybear
Thecrazybear

Reputation: 1

How do I use BigInterger In my code for calculating primes?

I'm using this basic and crude code below for calculating prime numbers then exporting them to a text file:

import java.util.Scanner;
import java.io.*;


public class primeGenerator{

    public static void main(String[] args)throws Exception {
        Scanner kb = new Scanner(System.in);
        String prime;
        long num = kb.nextLong();
        long i;
        long z=0;
        while(z==0){

            for (i=2; i < num ;i++ ){
                long n = num%i;
                if (n==0){

                    break;
                }
            }
            if(i == num){
                writer(num);

            }
            num=num+2;
        }
    }

    public static void writer(long num) throws Exception {

           FileWriter writer = new FileWriter("prime.txt",true); 
           String prime= ""+ num;
           writer.write(prime);
           writer.write("   ");
           writer.flush();
           writer.close();


    }
}

I would like to find primes beyond the Primative long's range and apparently big integer is the way to go about it. So how do i alter my code to do so?

Upvotes: 0

Views: 162

Answers (2)

johusman
johusman

Reputation: 3472

Do you really need this? Having numbers bigger than can be handled by long means you want to test numbers bigger than 9223372036854775807. If your for-loop can test a hundred million divisions per second, it will still take it 2923 years to determine if that number is prime - and longer for larger numbers, of course.

A common optimization is to only test divisions up to sqrt(num). If you haven't found anything then, the number is prime.

Upvotes: 3

Jon Skeet
Jon Skeet

Reputation: 1500185

Well, use BigInteger wherever you've currently got long. Instead of using % you'll use mod, instead of incrementing you'll use i = i.add(BigInteger.ONE), instead of == 0 you'll use equals(BigInteger.ZERO) etc.

Use Scanner.nextBigInteger instead of Scanner.nextLong, too.

Given that this looks like homework of some description (possibly self-set, of course) I won't write out the whole code for you - but if you have specific problems, feel free to ask.

Upvotes: 1

Related Questions