布尔函数

qq_36263297 2017-03-18 05:41:39
[b]public static boolean isPrime(int num)
{
int i;
int temp=0;
for(i=2;i<num;i++)
{
while((num%i)==0)
{
temp++;
}
}
if (num != 1 && temp<2) // 如果只有一次整除,那么该数为素数
{
System.out.print(true);
}
if(temp>=2)
{
System.out.print(false);
}
return false;
}




为什么不是素数不会输出false;但是是素数会输出true;
...全文
245 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37966604 2017-03-19
  • 打赏
  • 举报
回复
首先这里错了
for(i=2;i<num;i++)
{
while((num%i)==0)
{
temp++;
}
}
不能嵌套while循环。当这个num等于6的时候for循环第二轮的时候,i等于3,那就进入while的死循环出不来了,因为6%3==0永远成立。
把while换成if即可,否则你这个程序的bug太大太严重。至于为什么是素数就输出true不是就输出false你可以自己分析啊,带一个数字进去,看看经历了哪些不就懂了吗
lmc000000901 2017-03-18
  • 打赏
  • 举报
回复
你在if里面加了return false,当数据是错误的时候,会跳出循环,不会再经过输出false的if语句。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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