java for循环 求素数

2024年11月22日 03:50
有5个网友回答
网友(1):

楼主的程序略有误,下为修改后的代码
public class Test {
public static void main(String[] args) {
int i =1,j =2;
for(i=1;i<=100;i++) {
for(j=2;j<=i;j++){
//素数是指除了1和自身外不能被任何数整除的数
//因此遍历每一个小于i大于2的整数j
if(i%j==0)
//如果i能够被j整除
if(i==j)
//如果当i等于j的时候则满足i是素数的条件,即只能被1(
//j是从2计数的)和自身整除,因此i是素数
System.out.println(i +"是素数");
else
//在如果存在一个小于i大于2的整数j可以整除i,则i必不是
//素数,因此break操作.
break;//如果i可以被j整除且j不等于i,则跳出循环
}
}
}
}
亲测可用..

网友(2):

算法好像有问题。
if(i%j==0)
break;
如果 i==j时,会终止 for(j=2,j<=i,j++) 循环,不会到 if(i==j)
这一句。也就是 if(i==j) 不会执行。

如下语句试试:

for(i=1,i<=100,i++) {
for(j=2,j<=i,j++){
if(i%j==0)
break;
}
if(i==j)
System.out.println(i +"是素数");

}

网友(3):

import java.io.*;
class test  
{
public static void main (String[] args) throws java.lang.Exception
{
      for(int n=2;n<100;n++){
          boolean flag = true;
          for (int m=2;m < n;m++){
              if (n % m == 0){
                  flag = false;
                  break;
              }
          }
         if (flag){
              System.out.println(n);
              }
          }
}
}

你自己看下吧,两个for实现。

网友(4):

public class Test {
public static void main(String[] args) {
int i = 5;
for (int j = 1; j <= i; j++) {
boolean flag = true;
for (int k = 2; k < j; k++) {
if (j % k == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.println(j);
}
}
}
}

网友(5):

public class ForTest{
//公开的类名
public static void main(String[] args){
//方法
int count = 0;
//定义行数为0,为下面换行做铺垫
for ( int i = 2; i <= 10000 ; i++ ){
//定义i的取值范围和变化方法
boolean issushu=true;
//这段代码只判断i是否为素数
for( int j = 2; j < i; j++ ){
//定义j的取值范围和变化方法
if(i%j==0){
//i和j求余数当i%j=0
issushu = false;
//则这个数字不是素数则这段代码不成立
break;
//停止循环
}
}

if(issushu){
//如果是素数
System.out.print(i + " ");
//向控制台输出"i"
count++;
//只要有一个素数成立则+1
if(count % 8 == 0){
//当行数为8的时候
System.out.println();
//则换一行
count = 0;
//成功换行之后归零
}

}

}
}
}