初学者的初级问题,望能给予指点
今天看了一个关于循环语法应用的举例,要求设计一个小程序,算出101~200之间的质数,讲义中给出的代码是:
[code=Java][/code]public class T{
	public static void main(String[] args){
		for(int i=101;i<200;i+=2){
			boolean f = true;
			for(int j=2;j<i;j++){
				if(i%j==0){
					f=false;
					break;
				}
			}
			if(!f) {continue;}
			System.out.println(i);
		}
	}
}
这样能算出来,但是小弟有点懵,不知道在第二个for循环的时候应该怎么处理?怎么去思考这个问题,布尔型数据在什么时候需要?什么时候不需要?
大家有没有一个更容易理解的代码,本人比较笨,反应慢。还希望各位能指点指点?
我写的代码如下,一直运行出来都是这些数之间的奇数,帮我看看为什么?谢谢!!!!!!!!!!!!
public class T{	
	public static void main(String[] args){		
		             //只能被自身和1整除的数为质数;如a不能被a和1以外的任何数整除,1<x<a的数
		int i;	
		boolean f = true;			
		for(i=101;i<200;i+=2) {				
			for(int j=2;j<i;j++) {				
			  if(i%j==0) {f=false;break;}
		           else if(i%j!=0) { f=true;}				
			}
		if(f=true){System.out.println(i);}				
		}	
	}		
}
------解决方案-------------------- 要求设计一个小程序,算出101~200之间的质数
public class testmap{
public static void main(String[] args){
for(int i=101;i<200;i++){
if(i%2!=0){
System.out.println("质数"+i);
}
}
}
}
------解决方案-------------------- 第二个FOR循环表示,取J=2,然后J递增,一直增到i<j如果i除以j=0,表示这i可以除这个数,得出i不是质数,break一下,跳出此次循环(第二个循环)
其实这种简单的业务需求可以用很多种代码来完成,每个人的思维方式不一样.
至于LZ你的代码你的第二个for循环里,直接用第一个J就运行了if(101/2!=0){f=true},然后就打印了.所有的奇数除以2都不等于0,所以都打印出来了.
------解决方案-------------------- if(f=true){System.out.println(i);}  
改为
if(!f){...}
------解决方案-------------------- 刚看错了
	int startNum = 101;
		int endNum = 200;		
		int num = startNum;
		while (num <= endNum) {
			boolean flag = true;
			int index = 2;
			while(index<=endNum/2){
				if(num % index == 0){
					flag = false;
					break;
				}
				index++;
			}
			if(flag){
				System.out.print(num+"\t");
			}
			num++;
		}
------解决方案--------------------  for(int i=101;i<=200;i+=2){		  
		 for(int j=2;j<i;j++){
			 if(i%j==0){				  
				 break;
			 }			  
		 }
		 System.out.println(i);
	 }
------解决方案-------------------- 楼主的算法是对的,只可惜这句:
if(f=true){System.out.println(i);}  
那个if里的比较是错的,应该用“==”,而不是“=”。
按楼主那样写,无论f是true或false,print都执行,所以所有数都输出了。
------解决方案-------------------- 探讨  引用: 楼主的算法是对的,只可惜这句: if(f=true){System.out.println(i);} 那个if里的比较是错的,应该用“==”,而不是“=”。 按楼主那样写,无论f是true或false,print都执行,所以所有数都输出了。 您好!我按照您的提示运行了下,确实正确了,但就是不理解为什么if(f=true){System.out.println(…… 
------解决方案-------------------- 1、首先质数的意思是:公约数只有1和它本身。
2、所以本题的思路是:从2开始,依次向后,整除原数,如果有能整除尽的,说明它的公约数除了1和本身外还有其它的,也就是第二个for循环的作用。
你发的代码有一丝不对,也不能说不对吧,不太好,第二个for循环:for(int j=2;j<i;j++)
应该写成for(int j=2;j<Math.sqrt(i);j++),不用一直到原数,到它的平方根就行了。
至于bool值,这个很简单吧,你先理解一下质数的含义,然后顺着思路一下子就出来了。
不懂再问吧。
[Quote=引用:]
今天看了一个关于循环语法应用的举例,要求设计一个小程序,算出101~200之间的质数,讲义中给出的代码是:
[code=Java][/code]public class T{
public static void main(String[] args){
for(int i=101;i<200;i+=2){
boolean f = true;
for(int j=2;j<i;j++){
……
[/Quote]
------解决方案--------------------