埃拉托色尼筛法 java
sieve of eratosthenes java
我正在尝试编写一个实现埃拉托色尼筛法的程序。我可以从 2 到任何给定的结束数字,但我们正在处理的作业要求我们输入起始值。我完全卡住了。我尝试了许多不同的代码,但它总是给我奇怪的答案。
我的start是起始值,end是结束值。我基本上想找到这个范围的素数。谢谢!!!
public static void sieve(int start, int end) {
int size=(end-start)+1;
boolean result[]=new boolean[size];
int prime[]=new int[size];
for(int i=0; i<size; i++) {
prime[i]=start+i;
}
for(int i=0; i<size; i++) { //every number in result is true
result[i]=true;
}
for(int p=2; p*p <size; p++) {
if(result[p]==true) {
for(int i=p*2; i<size; i +=p) {
result[i]=false;
}
}
for(int i=2; i<size; i++) {
if(result[i]==true) {
System.out.print(prime[i] + " ");
}
}
}
}
埃拉托色尼筛法的工作原理是将每个素数的倍数标记为非素数,从第一个素数 2 开始。
因此,即使要求你找出start
到end
之间的素数,你还是要找出2到end
之间的所有素数。完成后,只需输出请求范围内的素数即可。
public class To_find_a_prime_number_using_sieve_of_Eratosthenes {
public static void main(String args[]){
int end_number;
int arr[];
arr=new int[100];
Scanner S=new Scanner(System.in);
System.out.println("enter the end number which you want to print he prime number");
end_number=S.nextInt();
//adding natural numbers in the array
for(int i=0;i<end_number;i++)
{
arr[i]=i;
}
for(int k=2;k<end_number;k++)
{
for(int l=2;l<end_number;l++)
{
if(arr[k]*l>end_number)
{
break;
}
else {
arr[arr[k]*l]=0;
}
}
}
for(int j=1;j<end_number;j++)
{
if(arr[j]!=0 && arr[j]!=1)
{
System.out.println(arr[j]);
}
}
}
}
我正在尝试编写一个实现埃拉托色尼筛法的程序。我可以从 2 到任何给定的结束数字,但我们正在处理的作业要求我们输入起始值。我完全卡住了。我尝试了许多不同的代码,但它总是给我奇怪的答案。
我的start是起始值,end是结束值。我基本上想找到这个范围的素数。谢谢!!!
public static void sieve(int start, int end) {
int size=(end-start)+1;
boolean result[]=new boolean[size];
int prime[]=new int[size];
for(int i=0; i<size; i++) {
prime[i]=start+i;
}
for(int i=0; i<size; i++) { //every number in result is true
result[i]=true;
}
for(int p=2; p*p <size; p++) {
if(result[p]==true) {
for(int i=p*2; i<size; i +=p) {
result[i]=false;
}
}
for(int i=2; i<size; i++) {
if(result[i]==true) {
System.out.print(prime[i] + " ");
}
}
}
}
埃拉托色尼筛法的工作原理是将每个素数的倍数标记为非素数,从第一个素数 2 开始。
因此,即使要求你找出start
到end
之间的素数,你还是要找出2到end
之间的所有素数。完成后,只需输出请求范围内的素数即可。
public class To_find_a_prime_number_using_sieve_of_Eratosthenes {
public static void main(String args[]){
int end_number;
int arr[];
arr=new int[100];
Scanner S=new Scanner(System.in);
System.out.println("enter the end number which you want to print he prime number");
end_number=S.nextInt();
//adding natural numbers in the array
for(int i=0;i<end_number;i++)
{
arr[i]=i;
}
for(int k=2;k<end_number;k++)
{
for(int l=2;l<end_number;l++)
{
if(arr[k]*l>end_number)
{
break;
}
else {
arr[arr[k]*l]=0;
}
}
}
for(int j=1;j<end_number;j++)
{
if(arr[j]!=0 && arr[j]!=1)
{
System.out.println(arr[j]);
}
}
}
}