这个代码有啥问题吗,为什么我想输出合数却输出了一串等差数列
#include<stdio.h>
int main()
{
int a,b;
for(a=2;a<=50;a++)
{
for(b=2;b<a;b++)
{
if (a%b==0);
break;
}
if(a!=b);
printf("%d ",a);
}
return 0;
}
#include<stdio.h>
int main()
{
int a,b;
for(a=2;a<=50;a++)
{
for(b=2;b<a;b++)
{
if (a%b==0);
break;
}
if(a!=b);
printf("%d ",a);
}
return 0;
}
2020-04-21
如果你要输出合数,循环判断条件:只要能被 比该数小的非1整数整除,即可。
代码如下:
#include<stdio.h>
int main()
{
int a, b;
for (a=2; a<=50; a++){
for(b=2;b<a;b++){
if(a%b==0){
printf("%d ", a);
break;
}
}
}
}
特别提醒:break 只能跳出for循环中的当次循环。
你写的这个函数,翻译一下大概为:首先判断 a是否能被小于a 但大于1 的整数整除,若能整除,则跳出了此次for循环。不判断下面的a不等于b。 但是除了满足第一个if判断的条件循环外,此外的 每次b++的循环中,都会判断a是否不等于b 。 因此 拿a=5 举例:b=2, 第一个if不成立,判断第二个if,满足条件5!=2,打印5;b=3,第一个if不成立,判断第二个if,满足条件5!=3,打印5;依次类推。这就是你多次打印同一个数的原因。
举报