JackII 发表于 2020-4-7 14:27:56

写了一个判断素数的程序,能不能帮我找找漏洞在哪儿

如题,写了一个判断素数的程序,但是运行了后没有反应

JackII 发表于 2020-4-7 14:28:29

#include <stdio.h>
int main()
{
      unsigned long int input,div;
      _Bool _isprime;
      while (scanf("%lu", &input))
                div = 2;
                for (_isprime = 0;div * div <= input;div++)
                {
                        if (input % div == 0)
                        {
                              printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                              _isprime = 1;
                        }
                }
      while (_isprime)
                printf("%lu is prime number!",input);
      return 0;
}   

JackII 发表于 2020-4-7 14:29:03

因为怕显得太乱,就把代码放在评论这里了

JackII 发表于 2020-4-7 14:33:17

才发现数学逻辑有点问题,_isprime == 0才是素数,但是没有什么关系,我现在主要不明白上面for那一块为什么没打印东西出来=- =

qiuyouzhi 发表于 2020-4-7 14:44:24

JackII 发表于 2020-4-7 14:33
才发现数学逻辑有点问题,_isprime == 0才是素数,但是没有什么关系,我现在主要不明白上面for那一块为什么 ...

#include <stdio.h>
int main()
{
         unsigned long int input,div;
         _Bool _isprime = 1;
         scanf("%d", &input);
         while (1)
               for (div = 2;div * div <= input;div++)
               {
                         if (input % div == 0)
                         {
                                 printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                                 _isprime = 0;
                                 goto Label;
                         }
               }
      Label: ;
         if (_isprime)
               printf("%lu is prime number!",input);
         return 0;
}   

人造人 发表于 2020-4-7 14:46:14

#include <stdio.h>
int main()
{
      unsigned long int input,div;
      _Bool _isprime;
      while (scanf("%lu", &input))
                div = 2;
                for (_isprime = 0;div * div <= input;div++)
                {
                        if (input % div == 0)
                        {
                              printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                              _isprime = 1;
                        }
                }
      while (_isprime)
                printf("%lu is prime number!",input);
      return 0;
}   


#include <stdio.h>
int main()
{
      unsigned long int input,div;
      _Bool _isprime;
      while (scanf("%lu", &input)) {
                div = 2;
      }
                for (_isprime = 0;div * div <= input;div++)
                {
                        if (input % div == 0)
                        {
                              printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                              _isprime = 1;
                        }
                }
      while (_isprime)
                printf("%lu is prime number!",input);
      return 0;
}   

人造人 发表于 2020-4-7 14:47:32

#include <stdio.h>

int main(void)
{
      unsigned long int input,div;
      _Bool _isprime;
      while (scanf("%lu", &input)) {
                div = 2;
                for (_isprime = 0;div * div <= input;div++)
                {
                        if (input % div == 0)
                        {
                              printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                              _isprime = 1;
                        }
                }
      }
      while (_isprime)
                printf("%lu is prime number!",input);
      return 0;
}   

大河之jian 发表于 2020-4-7 16:38:00

#include <stdio.h>
int main()
{
      unsigned long int input,div;
      int _isprime;
      while (scanf("%lu", &input))
                {
                        div = 2;
            for (_isprime = 0;div * div <= input;div++)
            {
                                if (input % div == 0)
                                {
                                       printf("%lu is divisible by %lu and %lu!",input,div,input/div);
                                        _isprime = 1;
                                        continue;
                }
            }
                        while (_isprime)
                        {
                                printf("%lu is prime number!",input);
                                break;
                        }
                }
      return 0;
}   
我用的c89没有布尔型,你想用布尔型改的话你看着改就可以,
页: [1]
查看完整版本: 写了一个判断素数的程序,能不能帮我找找漏洞在哪儿