我写了两个java的程序都有错误,是求绝对质数的,就是它的数字任意对换后仍为质数,求各位帮帮忙,看看是哪里要改的
class AbsolutePrimeNumber
{
public static void main(String[] args)
{
int m,n;
for(int i = 3;i<100;i++)
{
m = i/10;
n = i%10;
n = n*10 + m;
for(int j = 2;j<i/2;j++)
{
if ((i%j!=0)||(n%j!=0))
{
System.out.println(i);
}
else
System.out.println();
}
}
}
}
第二个是用函数的
class AbsolutePrimeNumber
{
public boolean Prime(int i)
{
int j;
for(;j<i;j++)
{
if(i%j==0)
return false;
else
return true;
}
}
public int change(int i)
{
int m;
m=(i%10)*10+(i/10);
return m;
}
public static void main(String[] args)
{
for(int i = 2;2<100;i++)
if (Prime(i) ||(Prime(i)&&Prime(change(i)) ) )
{
}
}
}
------解决方案--------------------
public static void main(String[] args) {
for (int i = 3; i < 100; i++) {
boolean result = true;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
result = false;
break;
}
}
if (result) {
System.out.println(i);
}
}
}
------解决方案--------------------
刚才那个错了,没有考虑到i和n的被除数范围,比如13和31,按照刚才的写法的话,13肯定是质数,但是i=31的时候,n=13,这个时候j=14>13,n%13得到0,就不能得出31也是质数的结论了。下面是我修改之后的: