C#急求急求,一段基础代码求高手帮忙解答一下..................
publicclasszhishu{publicstaticvoidmain(Stringargs[]){for(inti=101;i<200;i+=2){boolean...
public class zhishu
{
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(int j=2;j<i;j++)
{
if(i%j==0)
这里的执行过程是怎样的?
是不是
第一个是 if(101%2==0)
第二个是 if(103%3==0)
第三个是 if(105%4==0)
这样吗?
就这里我很模糊
忘了说, //输出101-200内的质数
他要求输出质数 为什么这里for(int j=2;j<i;j++) 是j++? 展开
{
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(int j=2;j<i;j++)
{
if(i%j==0)
这里的执行过程是怎样的?
是不是
第一个是 if(101%2==0)
第二个是 if(103%3==0)
第三个是 if(105%4==0)
这样吗?
就这里我很模糊
忘了说, //输出101-200内的质数
他要求输出质数 为什么这里for(int j=2;j<i;j++) 是j++? 展开
7个回答
展开全部
for(int i=101;i<200;i+=2) //101..103..105.....
{
boolean f = true; //控制输出
for(int j=2;j<i;j++) //这里表示从2到i之内的J,
{
if(i%j==0) //表示能被J整除的I,这里纠正你一个错误。第一个是101/2,101/3,101/4......101/100。知道吧?先循环完里面的小循环,再循环大循环。当然,第二个是 103/2,103/3,103/4.....103/102。这样才对
{
f =false; //当可以被整除时。f=false
break; //跳出循环
}
}
if(!f){continue;} //如果f=false
System.out.println(i); //输出i的值
总体来说,这段代码的作用是判断所有的i,是不是真的是质数。如果不是,输出它的值。当然,结果应该是空吧 ..应该是...好长时间没玩这个了。。
{
boolean f = true; //控制输出
for(int j=2;j<i;j++) //这里表示从2到i之内的J,
{
if(i%j==0) //表示能被J整除的I,这里纠正你一个错误。第一个是101/2,101/3,101/4......101/100。知道吧?先循环完里面的小循环,再循环大循环。当然,第二个是 103/2,103/3,103/4.....103/102。这样才对
{
f =false; //当可以被整除时。f=false
break; //跳出循环
}
}
if(!f){continue;} //如果f=false
System.out.println(i); //输出i的值
总体来说,这段代码的作用是判断所有的i,是不是真的是质数。如果不是,输出它的值。当然,结果应该是空吧 ..应该是...好长时间没玩这个了。。
展开全部
for(int i=101;i<200;i+=2)//循环101-200之间的数
{
boolean f = true;//为变量f赋值为真
for(int j=2;j<i;j++)//循环
{
if(i%j==0)//看i对j取余是否为0
{
f =false;//为0则变量f重新赋值为假
break;//然后返回
}
}
if(!f){continue;}//如果f为真,则继续循环
System.out.println(i);//输出i(质数)
}
{
boolean f = true;//为变量f赋值为真
for(int j=2;j<i;j++)//循环
{
if(i%j==0)//看i对j取余是否为0
{
f =false;//为0则变量f重新赋值为假
break;//然后返回
}
}
if(!f){continue;}//如果f为真,则继续循环
System.out.println(i);//输出i(质数)
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是你说的那个意思 一个大循环套一个小循环 外面的大循环根据i判断 里面的小循环根据j来判断 外面的大循环每执行一次 里面的小循环都要整个循环全执行一遍。
例如:
for(int i=101;i<200;i+=2)------------------i=101
{
boolean f = true;-----------------------f=true
for(int j=2;j<i;j++)---------相当于for(int j=2;j<101;j++)
{
if(i%j==0)-------------------相当于if(101%2==0)显然不满足条件
{ if里面代码不执行,大循环不执行 i
f =false; 还是等于101,小循环继续执行j++
break; 直到判断到j大于了101后或101%j==0
} 成立后走到break跳出小循环。
然后大循环执行下一步.如此反复
例如:
for(int i=101;i<200;i+=2)------------------i=101
{
boolean f = true;-----------------------f=true
for(int j=2;j<i;j++)---------相当于for(int j=2;j<101;j++)
{
if(i%j==0)-------------------相当于if(101%2==0)显然不满足条件
{ if里面代码不执行,大循环不执行 i
f =false; 还是等于101,小循环继续执行j++
break; 直到判断到j大于了101后或101%j==0
} 成立后走到break跳出小循环。
然后大循环执行下一步.如此反复
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写的太乱了,既然是质数,为什么要从2开始呢?从3开始不是更好?还有,终点用sqrt(i)比j<i来终止扫描效率高的多。程序太乱,建议你分出个函数来判断某个数是不是质数,返回Boolean类型的就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i跟j取余==0
执行
执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你理解的很正确,
j++ 也就是 j = j+1 或者 j += 1;
j++ 也就是 j = j+1 或者 j += 1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询