Java 显示从0到10000的200个不同素数
我一直在尝试打印200个素数的代码,这些素数的反面也是一个素数,并且这个数字不能是回文。我已经设置了10000个数字的限制来检查,假设其中有大约200个这样的素数。但我在第51行得到一个数组越界异常。有人能帮我把这件事弄清楚吗Java 显示从0到10000的200个不同素数,java,integer,Java,Integer,我一直在尝试打印200个素数的代码,这些素数的反面也是一个素数,并且这个数字不能是回文。我已经设置了10000个数字的限制来检查,假设其中有大约200个这样的素数。但我在第51行得到一个数组越界异常。有人能帮我把这件事弄清楚吗 import java.io.*; import java.lang.*; class Functions { int prime(int x) { int z=0; for(int i=2;i<x;i++)
import java.io.*;
import java.lang.*;
class Functions
{
int prime(int x)
{
int z=0;
for(int i=2;i<x;i++)
{
if(x%i==0) z=1;
}
if(z==1) return 0;
else return 1;
}
int reverse(int x)
{
int rev=0;
while(x!=0)
{ rev=rev*10; rev=rev+x%10; x=x/10; }
return rev;
}
int find(int x,int y[])
{
for(int g=0;y[g]!=0;g++)
{
if(x==y[g]) return 1;
}
return 0;
}
}
class Distinctp
{
public static void main(String arg[])
{
Functions S=new Functions();
int i;
int a[]=new int[200];
for(i=1;i<10000;i++)
{
if(S.prime(i)==1 && S.prime(S.reverse(i))==1)
{
if(i!=S.reverse(i))
{
if(S.find(S.reverse(i),a)==0)
{
for(int k=0;k<199;k++)
{
if(a[k]==0) //For assigning value in the last space of the array
{ a[k]=i; a[k+1]=0; }
}
}
}
}
}
for(i=0;i<200;i++)
{
System.out.println(a[i]);
}
}
}
import java.io.*;
导入java.lang.*;
类函数
{
整数素数(整数x)
{
int z=0;
对于(inti=2;i当k==199
时,该代码将导致,因为a[k+1]
将是a[200]
,这是超出范围的
for(int k=0;k<200;k++)
{
if(a[k]==0) //For assigning value in the last space of the array
{
a[k]=i;
a[k+1]=0;
}
}
for(int k=0;k
要解决此问题,您必须像下面这样限制for
循环的上限:
for(int k = 0; k < 199; k++) {
if(a[k] == 0) {
a[k] = i;
a[k + 1] = 0;
}
}
for(int k=0;k<199;k++){
如果(a[k]==0){
a[k]=i;
a[k+1]=0;
}
}
第51行是什么?脱离主题:在IDE中使用调试器。