Black__Jack 2015-11-23 03:30 采纳率: 0%
浏览 1341
已采纳

筛法选择素数,可以运行,但是没有输出,printf那句没有运行

程序可以运行,但是没有输出,没有任何反应。。怎么回事,求救

 #include<stdio.h>
#include<stdlib.h>

#define SIZE 1000

#define TRUE 1
#define FALSE 0

int 
main()
{
    char sieve[SIZE];
    char *sp;
    int number;
    for(sp=sieve;sp<&sieve[SIZE];)
        *sp=TRUE;
    for(number=3;;number+=2){
        sp=&sieve[0]+(number-3)/2;
        if(sp>=&sieve[SIZE])
            break;
    while(number%3==0||number%5==0)
        *sp=FALSE;
        }
    printf("2\n");
    for(number=3,sp=&sieve[0];
        sp<&sieve[SIZE];
        number+=2,sp++){
            if(*sp)
                printf("%d\n",number);
        }
    return ;
}
  • 写回答

4条回答 默认 最新

  • Black__Jack 2015-11-23 12:14
    关注

    首先感谢大家的回答,问题解决了,确实进入了一个死循环没有出来。不过不是在大家说的哪里。在之前的地方,就已经进了死循环没有出来。

     #include<stdio.h>
    #include<stdlib.h>
    
    #define SIZE 1000
    
    #define TRUE 1
    #define FALSE 0
    
    int 
    main()
    {
        char sieve[SIZE];
        char *sp;
        int number;
        for(sp=sieve;sp<&sieve[SIZE];)
            *sp++=TRUE;
        //我在这里,之前写的是*sp,但实际上应该是*sp++ 
        for(number=3;;number+=2){
            sp=&sieve[0]+(number-3)/2;
            if(sp>=&sieve[SIZE])
                break;
        while(sp+=number,sp<&sieve[SIZE])
            *sp=FALSE;
            }
        printf("2\n");
        for(number=3,sp=&sieve[0];
            sp<&sieve[SIZE];
            number+=2,sp++){
                if(*sp)
                    printf("%d\n",number);
            }
        return EXIT_SUCCESS;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?