筛法选择素数,可以运行,但是没有输出,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 ;
}

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

 #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;
}

while(number%3==0||number%5==0)
*sp=FALSE;
}
死循环,目测需要加上number++;

单步调试下程序,看看是卡在哪里了。

while(number%3==0||number%5==0)//这个要改成if吧
*sp=FALSE;
还有第一个for循环也退不出吧,没大括号

            完全不知道写的什么,参考http://blog.csdn.net/chengyingzhilian/article/details/7314851