当前位置: 代码迷 >> J2SE >> 用java求素数的一个有关问题,高手
  详细解决方案

用java求素数的一个有关问题,高手

热度:143   发布时间:2016-04-24 13:11:18.0
用java求素数的一个问题,高手请指教!
我编的程序代码如下:
public class Sushu{
  public static void main(String args[]){
  int i,j,g=1,k=0;
  System.out.println("从100到200之间的素数分别是:");
  for(i=100;i<=200;i++){
  for(j=2;j<i/2&&g==1;j++)
  if(i%j==0)
  g=0;
   
   
  if(g==1)
  {System.out.print(i+" ");
  k+=1;
  if(k%5==0)//每输出5个素数则换行
  System.out.println();
  g=1;
  }
  }
  }
}
以上代码未能得到正确的结果,而以下程序则能够输出100到200之间的素数,但是不能满足每输出5个素数就换行的要求!!
public class Sushu{
  public static void main(String args[]){
  int i,j,g=1,k=0;
  System.out.println("从100到200之间的素数分别是:");
  for(i=100;i<=200;i++){
  for(j=2;j<i/2&&g==1;j++)
  if(i%j==0)
  g=0;  
  if(g==1)
  System.out.print(i+" ");
  k+=1;
  if(k%5==0)//每输出5个素数则换行
  System.out.println();
  g=1;
  }
  }
}


------解决方案--------------------
你是把非素数也计成换行元素内了

Java code
int i, j, g = 1, k = 0;        System.out.println("从100到200之间的素数分别是:");                for (i = 100; i <= 200; i++) {            g = 1;            for (j = 2; j < Math.sqrt(i) && g == 1; j++)                if (i % j == 0) {                    g = 0;                    break;                }            if (g == 1) {                System.out.print(i + "  ");                k += 1;                if (k % 5 == 0)// 每输出5个素数则换行                    System.out.println();            }        }
  相关解决方案