哈哈哈的 发表于 2019-1-26 19:16:59

编写函数判断素数问题

#include<stdio.h>
#include<math.h>
int fun(int a)
{
        int i=0;
        int flag=0;
        for(i=2;i<a;i++);
        {
                if(a%i==0)
                flag=1;
               
                break;
               
        }
if(flag)
printf("NO\n");
else printf("YES\n");
return a;
}

void main()
{
        int a ;
        printf("输入一个数字判断是不是素数\n");
        scanf("%d",&a);
        a=fun(a);
}



编译提示break非法,应该如何修改??

行客 发表于 2019-1-26 19:25:06

本帖最后由 行客 于 2019-1-26 19:30 编辑

for(i=2;i<a;i++);
多写了一个;,去掉就可以正常运行了。

#include<stdio.h>
#include<math.h>
int fun(int a)
{
      int i=0;
      int flag=0;
      for(i=2;i<a;i++)
      {
                if(a%i==0)
                               
                                        flag=1;

                                        break;
                               
               
      }
if(flag)
printf("NO\n");
else printf("YES\n");
return a;
}

void main()
{
        int a ;
        printf("输入一个数字判断是不是素数\n");
        scanf("%d",&a);
        a=fun(a);
}

行客 发表于 2019-1-26 19:29:05

不过这个代码也有问题啊,你输入1也是素数。

哈哈哈的 发表于 2019-1-26 20:17:11

行客 发表于 2019-1-26 19:29
不过这个代码也有问题啊,你输入1也是素数。

那应该怎么改呢??

行客 发表于 2019-1-26 20:50:32

#include<stdio.h>
#include<math.h>
int fun(int number)
{
                if (number<=1)
                {
                        return 0;
                }
      int k = (int)sqrt((double)number);      //一个数能被 2 ~ number的开方 整除就是合数,反之是素数
      int i = 0;

      for(i = 2;i <= k;i ++)
      {
                if(number%i == 0)
                        break;
      }

      return i > k ? number : 0;
}

void main()
{
        int a,b ;
        scanf("%d",&a);
        b=fun(a);

        if (b)
        {
                printf("%d是素数",a);
        }
        else
        {
                printf("%d不是素数",a);
        }
}
页: [1]
查看完整版本: 编写函数判断素数问题