鱼C论坛

 找回密码
 立即注册
查看: 1571|回复: 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++);
多写了一个;,去掉就可以正常运行了。
#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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 19:29:05 | 显示全部楼层
不过这个代码也有问题啊,你输入1也是素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那应该怎么改呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 14:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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