注册 登录
编程论坛 C语言论坛

bool函数的使用有问题,求大神帮忙

加油胡椒粉 发布于 2019-09-15 20:24, 2724 次点击
#include<stdio.h>
#include<time.h>
#include<math.h>
bool prime1(long n)//方法1:素数判断(error指向这)
{
    long i;
    for(i=2;i<n;i++)
   
        if(n%i==0)
            return false;
        return true;
   
}
void PrimeTime1(long n)
{
    clock_t t;
    long sum=0,i;
    for(i=2;i<=n;i++)
    {
        if(prime1(i)==true)
            sum++;
    }
    t=clock()-t;
    printf("方法1:\n");
    printf("结果:2-%d的素数个数:%d\n",n,sum);
    printf("用时:%lf秒\n",((float)t)/CLOCKS_PER_SEC);

}
bool prime2(long n)//方法2:素数判断(error指向这)
{
    long i;
    for(i=2;i<=(int)sqrt(n);i++)
   
        if(n%i==0)
            return false;
        return true;
   
}
void PrimeTime2(long n)
{
    clock_t t;
    long sum=0,i;
    for(i=2;i<=n;i++)
    {
        if(prime2(i)==true)
            sum++;
    }
    t=clock()-t;
    printf("方法2:\n");
    printf("结果:2-%d的素数个数:%d\n",n,sum);
    printf("用时:%lf秒\n",((float)t)/CLOCKS_PER_SEC);
}
int main()
{
    long n;
    printf("n(大于10000)");
    scanf("%d",&n);
    if(n<10000)
        return 0;
    PrimeTime1(n);
    PrimeTime2(n);
    return 1;
}
它下面的显示(我用的VC++6.0)
error C2059: syntax error : 'type'
error C2059: syntax error : ';'
error C2061: syntax error : identifier 'prime1'
4 回复
#2
自学的数学2019-09-15 21:08
#3
星泪成寒2019-09-15 21:17
C没有bool这个关键字,所以在头文件下面加下面几行
#define bool int
#define true 1
#define false 0

#4
bcbbcclbbc2019-09-15 21:52
bool是布尔变量,但是C语言里好像没有这个定义类型(关键字)
如果是用C语言编译运行
判断真假可以用int类型中的1和0来表示(非零为真)
#5
rjsp2019-09-16 09:03
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdbool.h>

bool prime1( unsigned long n )
{
    if( n < 2 )
        return false;

    for( unsigned long i=2; i!=n; ++i )
        if( n%i == 0 )
            return false;
    return true;
}

bool prime2( unsigned long n )
{
    if( n<2 || (n!=2 && n%2==0) )
        return false;

    for( unsigned long i=3; i<=n/i; i+=2 )
        if( n%i == 0 )
            return false;
    return true;
}

void timeit( bool (*pprime)(unsigned long n), unsigned long n )
{
    unsigned long count = 0;
    clock_t t = clock();
    for( unsigned long i=1; i!=n+1; ++i )
        if( (*pprime)(i) )
            ++count;
    t = clock() - t;
    printf( "获得%lu个素数, 耗时%.2f秒\n", count, t*1.0/CLOCKS_PER_SEC );
}

int main( void )
{
    unsigned long n;
    if( 1 != scanf("%lu",&n) )
        return 1;

    puts( "方法一:" );
    timeit( &prime1, n );
    puts( "方法二:" );
    timeit( &prime2, n );
    return 0;
}
1