鱼C论坛

 找回密码
 立即注册
查看: 1793|回复: 4

[已解决]编写函数判断素数问题

[复制链接]
发表于 2019-1-26 19:16:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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++);
多写了一个;,去掉就可以正常运行了。

  1. #include<stdio.h>
  2. #include<math.h>
  3. int fun(int a)
  4. {
  5.         int i=0;
  6.         int flag=0;
  7.         for(i=2;i<a;i++)
  8.         {
  9.                 if(a%i==0)
  10.                                
  11.                                         flag=1;

  12.                                         break;
  13.                                
  14.                
  15.         }
  16. if(flag)
  17. printf("NO\n");
  18. else printf("YES\n");
  19. return a;
  20. }

  21. void main()
  22. {
  23.         int a ;
  24.         printf("输入一个数字判断是不是素数\n");
  25.         scanf("%d",&a);
  26.         a=fun(a);
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-26 19:25:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 行客 于 2019-1-26 19:30 编辑

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

  1. #include<stdio.h>
  2. #include<math.h>
  3. int fun(int a)
  4. {
  5.         int i=0;
  6.         int flag=0;
  7.         for(i=2;i<a;i++)
  8.         {
  9.                 if(a%i==0)
  10.                                
  11.                                         flag=1;

  12.                                         break;
  13.                                
  14.                
  15.         }
  16. if(flag)
  17. printf("NO\n");
  18. else printf("YES\n");
  19. return a;
  20. }

  21. void main()
  22. {
  23.         int a ;
  24.         printf("输入一个数字判断是不是素数\n");
  25.         scanf("%d",&a);
  26.         a=fun(a);
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 19:29:05 | 显示全部楼层
不过这个代码也有问题啊,你输入1也是素数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-26 20:17:11 | 显示全部楼层
行客 发表于 2019-1-26 19:29
不过这个代码也有问题啊,你输入1也是素数。

那应该怎么改呢??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 20:50:32 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<math.h>
  3. int fun(int number)
  4. {
  5.                 if (number<=1)
  6.                 {
  7.                         return 0;
  8.                 }
  9.         int k = (int)sqrt((double)number);        //一个数能被 2 ~ number的开方 整除就是合数,反之是素数
  10.         int i = 0;

  11.         for(i = 2;i <= k;i ++)
  12.         {
  13.                 if(number%i == 0)
  14.                         break;
  15.         }

  16.         return i > k ? number : 0;
  17. }

  18. void main()
  19. {
  20.         int a,b ;
  21.         scanf("%d",&a);
  22.         b=fun(a);

  23.         if (b)
  24.         {
  25.                 printf("%d是素数",a);
  26.         }
  27.         else
  28.         {
  29.                 printf("%d不是素数",a);
  30.         }
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-15 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表