划水豹 发表于 2019-3-11 21:37:36

输入一个大于等于3的正整数,判断其是否是素数

不知道为什么学校的系统报错
#include<stdio.h>
int main()
{
        int a,b,c;
        printf("请输入大于3小于10000的数:\n");
        scanf("%d",&a);
        for(b=2;b<a;b+=1)
        {
                c=a%b;
                if(c==0)
                {
                   printf("no prime\n");
                   break;
                   return0;
                  
          }
                else c=1;
               
        }
        if (c==1)
        printf("prime\n");
        return 0;
       
}

jackz007 发表于 2019-3-11 22:29:13

本帖最后由 jackz007 于 2019-3-11 22:31 编辑

    是代码有问题,变量 c 不应该同时用作素数标志,应该另外设置专用变量,已经改好:
#include<stdio.h>
main(void)
{
      int a , b , c , d                  ;
      printf("请输入大于3小于10000的数:")    ;
      scanf("%d" , & a)                  ;
      for(b = 2 ; b < a ; b += 1) {
                d = 1                        ;
                c = a % b                  ;
                if(c == 0) {
                     d = 0               ;
                     break               ;
                }
      }
      if(d) printf("prime\n")            ;
      else printf("no prime\n")            ;
}

ba21 发表于 2019-3-11 22:38:14

你的代码具体有什么问题不知道。
不过明显的问题有,{}多打几个不占你的硬盘空间,代码整洁很重要。
c 是用来求余数的,你又用c来做标记,我认为不合适。

代码我觉得这样写更合适:
#include<stdio.h>

int main()
{
      int a,c;
                int i;
                int flag; // 用于标记是否为素数

      printf("请输入大于3小于10000的数:\n");
      scanf("%d",&a);

                flag = 0; // 先假定是素数
      for( i=2;i<a;i++ )
      {
            c = a % i;

            if ( c==0 )
            {         
                                flag = 1;        // 不是素数标记为1
                                break;                // break 就够了                  
            }               
      }
               
      if ( flag )
                {
                        printf("no prime\n");
                }
                else
                {
                        printf("prime\n");
                }

      return 0;
      
}
页: [1]
查看完整版本: 输入一个大于等于3的正整数,判断其是否是素数