#include <stdio.h>
bool IsPrime(int m)//本行报错,原因未知
{
int i;
for(i=2;i<m;++i)
{
if(0==m%i)
break;
}
if(i==m)
return true;
else
return false;
}
void TraverseVal(int n)
{
int i;
for(i=2;i<=n;++i)
{
if(IsPrime(i))
printf("%d\n",i);
}
}
int main(void)
{
int val;
scanf("%d",&val);
TraverseVal(val);
return 0;
}
你的编译器是c语言,c语言是不支持bool类型的。
c++才支持bool类型的。你把编译器改成c++的就行
c语言可以用int类型的1和0,来代替bool类型。
#include <stdio.h>
int IsPrime(int m)//本行报错,原因未知
{
int i;
for (i = 2; i < m; ++i)
{
if (0 == m % i)
break;
}
if (i == m)
return 1;
else
return 0;
}
void TraverseVal(int n)
{
int i;
for (i = 2; i <= n; ++i)
{
if (IsPrime(i))
printf("%d\n", i);
}
}
int main(void)
{
int val;
scanf("%d", &val);
TraverseVal(val);
return 0;
}
也可以通过枚举自定义bool类型
#include <stdio.h>
typedef enum {false,true} bool; //枚举变量默认从0开始自加,假为0,真为1
bool IsPrime(int m)//本行报错,原因未知
{
int i;
for (i = 2; i < m; ++i)
{
if (0 == m % i)
break;
}
if (i == m)
return true;
else
return false;
}
void TraverseVal(int n)
{
int i;
for (i = 2; i <= n; ++i)
{
if (IsPrime(i))
printf("%d\n", i);
}
}
int main(void)
{
int val;
scanf("%d", &val);
TraverseVal(val);
return 0;
}
如有帮助,望采纳!谢谢!