JAVA编写求100以内的素数问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 01:30:09
用JAVA编写100以内的素数程序,要求每5个输出一行,这是我自己写点程序,不知道哪里有问题,那位高手指点指点
public class PrimeNumber
{
public static void main(String[] args)
{
System.out.println("100以内的素数有:");
int i=2,j=0,m;
for(i=2;i<=100;i++)
for(m=1;m<=(int)(Math.ceil(Math.sqrt(i)));m++)
{
if(i%m==0)
{continue;}
else
{
System.out.print(+i+"\t");
j++;
if(j%5==0)
System.out.println();
}
}

}

}
希望在这个程序上做修改

public class PrimeNumber
{
public static void main(String[] args)
{
System.out.println("100以内的素数有:");
int i=2,j=0,m;
for(i=2;i<=100;i++)
for(m=2;m<=(int)(Math.ceil(Math.sqrt(i)));m++)
{
if(i%m==0) {break;}
if(m>=(int)(Math.ceil(Math.sqrt(i))))
{
System.out.print(+i+"\t");
j++;
if(j%5==0)
System.out.println();
break;
}
}

}

}

你的continue用的有问题,continue的是内能循环,而不是外层循环
另外,if-else分支也存在问题,必须把所有的都判断玩了才可以确定是素数
所有else分支应该变成if判断,这是我在源程序上做的改变,希望对你有帮助!

//修改您写写的逻辑。
//试验了下,应该对了 你写的东西具体问题出现在if else上,好好看下。

public class PrimeNumber
{
public static void main(String[] args)
{
System.out.println("100以内的素数有:");
int i=2,m,j;
for(i=2;i<=100;i++) {
j=(int)(Math.ceil(Math.sqrt(i)));
for(m=2;m<=j;m++)
{
if(i%m==0) {break;}
if(m