黑马程序员技术交流社区
标题:
找错误,我自己编写个程序输出结果不对,我很纠结,求.....
[打印本页]
作者:
董月峰
时间:
2014-1-4 14:35
标题:
找错误,我自己编写个程序输出结果不对,我很纠结,求.....
本帖最后由 董月峰 于 2014-1-4 14:41 编辑
编程打印所有的3位质数
质数特点:只能被1和其本身整除
*/
public class Test6
{
public static void main(String[] args)
{
int x=0;
for(int i=100;i<1000;i++)
{
for(int j=i-1;j>1;j--)
{
if(i%j==0)
x=0;
else
x=1;
}
if(x==1)
System.out.println(i);
}
}
}
//我输出结果是100-1000所有的鸡数特喵的错在哪了
作者:
几番意难相付
时间:
2014-1-4 14:41
本帖最后由 几番意难相付 于 2014-1-4 14:44 编辑
public class Test6
{
public static void main(String[] args)
{
int x=0;
for(int i=100;i<=1000;i++)
{
for(int j=i-1;j>1;j--)
{
if(i%j==0){
x=0;
break;
}
else
x=1;
}
if(x==1)
System.out.println(i);
}
}
}
复制代码
作者:
几番意难相付
时间:
2014-1-4 14:53
本帖最后由 几番意难相付 于 2014-1-4 14:59 编辑
先说说你程序的逻辑
1,定义一个变量 用来判断某个数是否符合质数的条件
2,定义一个循环 循环次数为100到1000的差,也就是在100到1000中找你需要的数
3,没循环一次 就用这个数除以该数到1之间的每个值
4,如果在执行上面的循环的过程中 该数能被另一个数整除 则跳出循环
5,如果这个数不能被其他数整除 则将第一步中定义的变量的值改为1
6 ,判断第一步中定义的变量的值 如果是1就打印i的值
说说你的程序为什么出错
在第6步上,假如一个数不能被其他的数整除 x的值就变为1了
此后 x的值没有被其他代码改变过 也就是x始终都为1 打印语句的if(x==1)这句代码就永远成立导致i的值始终被打印
解决方法 像我上面的代码那样 如果这个数不是质数 则把x的值改为0 继续下一次循环
作者:
董月峰
时间:
2014-1-4 15:07
几番意难相付 发表于 2014-1-4 14:53
先说说你程序的逻辑
1,定义一个变量 用来判断某个数是否符合质数的条件
2,定义一个循环 循环次数为100到1 ...
谢谢解惑,改用布尔判断了
public class Test6
{
public static void main(String[] args)
{
for(int i=100;i<1000;i++)
{
boolean x=true;
for(int j=i-1;j>Math.sqrt(j);j--)
{
if(i%j==0)
{
x=false;
break;
}
}
if(x)
System.out.println(i);
}
}
}
作者:
分解式
时间:
2014-2-25 08:09
楼上正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2