#include
void main()
{
int a,b,x;
for(a=100;a<=200;a++)
{
x=0; //防止上一次的影响,每次x归零
for(b=2;b {
if(a%b==0) //if(条件)后要加语句,不能直接用else,把条件转换一下就行
x=1;//这里用x标记有没有可以的因数,有x=1,没有还是0
}
if (x!=1) //x!=1或x==0都是一样的
printf("%d\n",a);//\n为了美观
}
}
你的想法有问题,如果a不是b的倍数输出,那要输出多少个?它判断100多次输出100多次?
还有if里面条件不能用=,=是赋值,判断相等是==
算法依据:如果一个数 m ,不能被任何从2到它加 1 的平方根之间的任何一个数整除,那么它就是一个素数。
#include
#include
int main()
{
int m,i,k;
bool isLeap = true;
//从100循环到200逐个测试是否为素数
for(m=100;m<=200;m++){
//初始化标志位素数
isLeap = true;
//取m+1的平方根
k = (int)sqrt((double)( m + 1) );
//用i去除以m,以测试是否为素数
for(i=2;i<=k;i++){
if(m%i==0) {
//不是素数,跳出循环
isLeap = false;
break;
}
}
if(isLeap) {
//输出素数
printf("%d\n",m);
}
}
思路上虽然不够简洁,但是没有错误。
程序有错误。
if(a%b=0) else ptintf("%d",a);
不能这么写,而且=和==是不一样的,不要犯低级错误。
应该是
for(b=2;b if (a % b == 0)
continue;
}
printf("%d",a);
要对所有的除数判定完才能给结果的。
if(a%b=0) ??