鱼C论坛

 找回密码
 立即注册
查看: 991|回复: 1

为什么第二个函数中的变量j不用判断是不是素数?

[复制链接]
发表于 2023-8-16 10:39:44 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int sushu(int a)
{
        for(int i=2;i<a/2;i++)
        {
                if(a%i==0)
                {
                        return 1;
                }
        }
        return 0;
}
void fun(int a)
{
        printf("%d=",a);
        int j=2,m;
        m=a;
        while(j<a/2)
        {
                //sushu(j);
                if(m%j==0)
                {
                        printf("%d",j);
                        if(m/j>2)
                        {
                                printf("x");
                        }
                         m/=j;
                }
                else
                {
                        j++;
                }
        }
}
int main(void)
{
        int a;
        int c;
        scanf("%d",&a);
        c=sushu(a);
        if(c)
        {
                fun(a);
         }
        else
        {
                printf("%d=%d",a,a);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-16 10:39:58 | 显示全部楼层
第二个函数中的变量j不需要判断是否为素数,因为它的作用是用来寻找a的因子。在while循环中,变量j从2开始递增,每次判断m是否能被j整除。如果能整除,说明j是a的一个因子,我们打印出来,并且更新m的值为m/j。然后继续循环,直到j大于等于a的一半时结束。

在这个过程中,我们并不需要判断j是否为素数。因为如果j不是素数,那么它一定有一个小于j的因子k,那么m能被k整除,而不会被j整除。所以我们只需要判断m能否被j整除,就可以确定j是否是a的因子。而不需要判断j是否为素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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