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条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题