int m;
scanf("%d",&m);
int a=1;
int i=2;
for(i=2;i<m;i++){
if(m/i==0){
a=0;
}
}
if(a==1){
printf("是素数");
}
else{printf("不是素数");}
为什么不论输入什么数都打印“是素数”?
判断if(m/i==0)中:不应该是除,而应该是取余
应该是 if(m%i==0),判断能否被一个数整除
当i<m时m/i永远不会等于0啊,至少为1
你应该求模取余用的运算符%啊
你循环里面的判断有问题,判断是否整除是用取余符号%
如有帮助,望采纳。点击我回答右上角【采纳】按钮。
int m;
scanf("%d",&m);
int a=1;
int i=2;
for(i=2;i<m;i++){
if(m%i==0){
a=0;
break;
}
}
if(a==1){
printf("是素数");
}
else{printf("不是素数");}
想要快一点的话可以直接到 √n
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int nextInt = scanner.nextInt();
boolean flag = false;
for (int i = 2;i < Math.sqrt(nextInt);i++){
if(nextInt / i == 0){
flag = !flag;
break;
}
}
System.out.println(nextInt + (flag ? "是素数" : "不是素数"));
}