您的位置:首页 > 编程语言 > Java开发

java中BigInteger应用

2017-10-20 22:25 260 查看
程序小白,希望和大家多交流,共同学习

项目任务:

编程找出100_0000_0000_0000_0000以内所有的质数,并将所有找出的质数保存到out.txt文件中。

说明:由于数据太大,所以一次运行可能不能找完,程序和计算机可能关闭,

下次启动时应继续接着上次的找,直到找完为止。

import java.io.File;
import java.io.PrintWriter;
import java.io.FileWriter;
import java.util.Scanner;
import java.math.BigInteger;

public class WriterBigPrime
{
public static void main(String[] args) throws Exception
{
BigInteger bigest = new BigInteger("1000000000000000000");
BigInteger number = null;
File printPrime = new File("printPrime.txt");

if (!printPrime.exists())
{
PrintWriter output = new PrintWriter(printPrime);
number = new BigInteger("2");
}
else
{
number = findFinalBigInteger(printPrime);
}

for (int i = 0; ; i++)
{
FileWriter write = new FileWriter(printPrime, true);
PrintWriter output = new PrintWriter(write);
if (number.compareTo(bigest) >= 0)
{
break;
}
number = number.add(new BigInteger("1"));
if (isPrime(number))
{
output.println(number);
System.out.println(number);
}
output.close();
}
}

public static BigInteger findFinalBigInteger(File printPrime) throws Exception
{
Scanner input = new Scanner(printPrime);
BigInteger finalNumber
4000
= new BigInteger((input.nextBigInteger()).toString());
while (input.hasNext())
{
finalNumber = input.nextBigInteger();
}
input.close();

return finalNumber;
}

public static boolean isPrime(BigInteger number)
{
for (int i = 2; ;i++)
{
//System.out.println("londing ...");
BigInteger judge = new BigInteger(new Integer(i).toString());
if (judge.multiply(judge).compareTo(number) <= 0)
{
if (number.remainder(judge).equals(new BigInteger("0")))
{
return false;
}
}
else
return true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: