问题描述
- 筛法选择素数,可以运行,但是没有输出,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("2n"); for(number=3,sp=&sieve[0]; sp<&sieve[SIZE]; number+=2,sp++){ if(*sp) printf("%dn",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("2n");
for(number=3,sp=&sieve[0];
sp<&sieve[SIZE];
number+=2,sp++){
if(*sp)
printf("%dn",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
时间: 2024-08-02 03:45:52