永发信息网

Java.判断101-200之间有多少个素数,并输出所有素数。

答案:3  悬赏:0  手机版
解决时间 2021-02-24 10:20
  • 提问者网友:皆是孤独
  • 2021-02-23 15:11
用这种方法:
public class lianxi02 {
public static void main(String[] args) {
int count = 0;
for(int i=101; i<200; i+=2) {
boolean b = false;
for(int j=2; j<=Math.sqrt(i); j++)
{
if(i % j == 0) { b = false; break; }
else { b = true; }
}
if(b == true) {count ++;System.out.println(i );}
}
System.out.println( "素数个数是: " + count);
}
}
输出答案是:101
102
103
……200
素数的个数是100

而换这种方法:
import java.math.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
{
int x=0;
Vector v = new Vector();//集合,用来装所有的素数
for(int i=101;i<=200;i++)
{
boolean b=true;//标签为b为真
double m = Math.sqrt(i);
for(int j=2;j {
if(i%j==0)//求余数是否为0
{
b = false;//如果为0, 将标签设置为false
break; //可以整除就跳出这个循环
}
}
if(b==true)//
{
v.add(i);//将符合要求的i加到集合里 x++; // 素数个数加1
} }
System.out.println("100到200中间有 "+x+" 个素数"); System.out.println("素数为:/n"+v);
}
}
就可以输出正确答案,这是为什么?
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-02-23 16:03
两种方法都是对的,但是第二个程序写得有点问题:
for(int j=2;j for(int j=2;j <= Math.sqrt(i);j++)不然结果中会有121和169两个平方数,

x变量没有进行计数累加,所以这里的输出也不对,
输出语句中的“/n”应该改为“\n”,才表示换行。
全部回答
  • 1楼网友:旧脸谱
  • 2021-02-23 17:52
都是对的好吗
  • 2楼网友:何以畏孤独
  • 2021-02-23 17:22
public class tests { public static void main(string args[]) { for(int i=100;i<=200;i++ ) { for(int j=2;j<=i;j++) { if(i%j==0&&j!=i) { break ; }else if(i==j) { system.out.println(i); } } } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯