日期:2014-05-20  浏览次数:20644 次

初学者求助java
我写了两个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);
            }
        }
    }
------解决方案--------------------
引用:
package test;

public class Test1 {
public static void main(String[] args) 
{
int m,n;
    for(int i = 3;i<100;i++)
    {
     int k=0,t=0,l=0;
     m = i/10;
        n = i%10;
……

刚才那个错了,没有考虑到i和n的被除数范围,比如13和31,按照刚才的写法的话,13肯定是质数,但是i=31的时候,n=13,这个时候j=14>13,n%13得到0,就不能得出31也是质数的结论了。下面是我修改之后的: