首页 新闻 会员 周边 捐助

求质数哪里不对吗?

0
[待解决问题]

public class Zhishu {
static int i;
public static void main(String[] args) {
panDuna(50);
}
public static void panDuna(int a) {
boolean f ;
for(int i = 2; i <a; i++){
if(a%i==0) {
f=false;
}else {
f=true;
} }

if(true)
System.out.println("是猪");
if(false)
System.out.println("不是");
}
}

一个IT小萌新的主页 一个IT小萌新 | 菜鸟二级 | 园豆:206
提问于:2017-12-28 17:37
< >
分享
所有回答(3)
1

public class Zhishu {
static int i;
public static void main(String[] args) {
panDuna(50);
}
public static void panDuna(int a) {
boolean f =true;
for(int i = 2; i <a; i++){
if(a%i==0) { 
f=false; 

break;//一定要加上
}

}

if(true)
System.out.println("是猪");
if(false)
System.out.println("不是");
}
}

sunshine_zx | 园豆:202 (菜鸟二级) | 2017-12-28 19:10

break只会跳出当前循环,还会进入下一轮。所以必须使用return

支持(0) 反对(0) 菜鸟乙 | 园豆:296 (菜鸟二级) | 2017-12-29 00:57

@菜鸟乙: break跳出当前循环,循环不在进行下一步;continue跳出本次循环,循环会进行下一轮,这两个还是有区别的,所以层主这边使用break是没有错误的。

支持(0) 反对(0) 皈依我 | 园豆:200 (初学一级) | 2017-12-29 14:15
0

质数最基础的判断是要把0,1先拿出来单独判断,接下来再判断目标数对目标数/2取模是否为0

Daniel Cai | 园豆:10424 (专家六级) | 2017-12-28 21:24
0

package hibernate_001;
public class Zhishu {
static int i;
public static void main(String[] args) {
int sResutl = panDuna(47);
if(sResutl==1){
 System.out.println("非质数");
}else{
 System.out.println("是质数");
}
}
public static  int panDuna(int a) {
boolean f =true;
for(int i = 2; i <a; i++){
if(a%i==0) {
f=false;

return 1;//一定要加上
}else{
 
}

}

//if(f==true)
//System.out.println("是猪");
//if(f==false)
//System.out.println("不是");
return 0;
}
}

菜鸟乙 | 园豆:296 (菜鸟二级) | 2017-12-29 00:57

for(int i = 2; i <a; i++)  for循环这边可以优化,for(int i = 2; i <a/2; i++)  只需要循环到一半就行,因为当i>a/2时,a对i取模不可能等于0

支持(0) 反对(0) 皈依我 | 园豆:200 (初学一级) | 2017-12-29 14:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册