这是看了某篇文章,然后照着写的,感觉不错,语言用的是java,很有思维性。
以前也写过,但是用的是c,现在用的是java,附上代码。附件是100万素数的结果
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
public class PrimeNumber
{
public List<Integer> getPrimeNumber2(int n)
{
List<Integer> list = new ArrayList<Integer>();
long start = System.currentTimeMillis();
BitSet b = new BitSet(n + 1);
int count = 0;
int i;
for (i = 2; i <= n; i++)
{
b.set(i);
}
i = 2;
while (i * i <= n)
{
if (b.get(i))
{
list.add(i);
count++;
int k = 2 * i;
while (k <= n)
{
b.clear(k);
k += i;
}
}
i++;
}
while (i <= n)
{
if (b.get(i))
{
count++;
list.add(i);
}
i++;
}
long end = System.currentTimeMillis();
System.out.println(count + " primes");
System.out.println((end - start) + " milliseconds");
return list;
}
public static void main(String[] args) throws Exception
{
Integer number = 1000000;
PrimeNumber primeNumber = new PrimeNumber();
List<Integer> list = primeNumber.getPrimeNumber2(number);
FileWriter out = new FileWriter(new File("d:/a.txt"));
for (int i = 0; i < list.size(); i++)
{
out.write(list.get(i) + " ");
if (i != 0 && (i + 1) % 10 == 0)
{
out.write("\n");
}
}
}
}