新手编程,判断101到200之间的素数,但是算出的结果不对,请大侠指正

qq_27094119 2016-09-17 05:41:20
package com;
public class TestFor5{//判断101到200之间的素数,用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数, 反之是素数。
public static void main(String[]args){
int x=0;
int y=0;
int count=0;
int mod0=0;
int mod1=0;
for(x=101;x<=200;x++){//通过循环确定判断数值的范围是101到200
for(y=2;y<=Math.sqrt(x);y++){
mod0=x%y;
mod1=mod1+mod0;
}
if(mod1!=0){
count++;
System.out.println(x);
}
}
System.out.print("101到200之间素数的个数是:"+count);
}
}
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnl9211 2016-09-18
  • 打赏
  • 举报
回复

public static void main(String[] args) {
		int x=0;
		int y=0;
		int count=0;
		int mod0=0;
		for(x=101;x<=200;x++){//通过循环确定判断数值的范围是101到200
			int mod1=0;//每个x开始判断时,mod1归零
			for(y=2;y<=Math.sqrt(x);y++){
				mod0=x%y;
				if(mod0==0){//x不是素数,跳出内循环
					mod1=0;//设置判断条件---不是素数
					break;
				}
				mod1=mod1+mod0;
			}
			if(mod1!=0){//判断为素数
				count++;
				System.out.println(x);
			}
		}
		System.out.print("101到200之间素数的个数是:"+count);

	}
qq_27094119 2016-09-17
  • 打赏
  • 举报
回复
引用 2 楼 u013871100 的回复:
你这个是我n年前学习javaSE时候练手的一道练习题,如今我重写了一遍,当做是温习吧!! public class PrimerNumber { public static void main(String[] args) { int count=0; for(int i=101;i<=200;i++){ System.out.println(i+" 是否为素数: "+(isPrimerNum(i)==false?"不是":"是")); if (isPrimerNum(i)) { count += 1; } } System.out.println("\n 共有素数: "+ count +"个"); } public static boolean isPrimerNum(int p){ int i; boolean res=true; for(i=2;i<=Math.sqrt(p);i++){ if (p%i==0) { res=false; break; } } return res; } }
//这样很复杂啊,我还没学那么多呢
qq_27094119 2016-09-17
  • 打赏
  • 举报
回复
引用 1 楼 abcdefghiijklmnopqrs 的回复:
public static void main(String[]args){
int x=0;
int y=0;
int count=0;
int mod0=0;
int mod1=0;
for(x=101;x<=200;x++){//通过循环确定判断数值的范围是101到200
mod0=0;
for(y=2;y<=Math.sqrt(x);y++){
mod0=x%y;
if(mod0 == 0){
count++;
System.out.println(x);
break;
}
}
System.out.print("101到200之间素数的个数是:"+(100-count));
}
}
通过这样能得出正确数目,但是不能输出具体的数啊,为什么判断条件用mod!=0不行啊
修罗debug 2016-09-17
  • 打赏
  • 举报
回复
你这个是我n年前学习javaSE时候练手的一道练习题,如今我重写了一遍,当做是温习吧!! public class PrimerNumber { public static void main(String[] args) { int count=0; for(int i=101;i<=200;i++){ System.out.println(i+" 是否为素数: "+(isPrimerNum(i)==false?"不是":"是")); if (isPrimerNum(i)) { count += 1; } } System.out.println("\n 共有素数: "+ count +"个"); } public static boolean isPrimerNum(int p){ int i; boolean res=true; for(i=2;i<=Math.sqrt(p);i++){ if (p%i==0) { res=false; break; } } return res; } }
  • 打赏
  • 举报
回复
public static void main(String[]args){
int x=0;
int y=0;
int count=0;
int mod0=0;
int mod1=0;
for(x=101;x<=200;x++){//通过循环确定判断数值的范围是101到200
mod0=0;
for(y=2;y<=Math.sqrt(x);y++){
mod0=x%y;
if(mod0 == 0){
count++;
System.out.println(x);
break;
}
}
System.out.print("101到200之间素数的个数是:"+(100-count));
}
}

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧