m0_68639754 2023-03-19 01:22 采纳率: 44.4%
浏览 171
已结题

分解质因数求最大公约数

代码没问题就是结果一直为一放不了代码没办法11111112111111很简单的问题但是卡住我了有没有人帮忙看看的

  • 写回答

3条回答 默认 最新

  • a5156520 2023-03-19 11:31
    关注

    应该是因为分解质因数和计算m和n的公共质因数那里需要改进下,修改如下:

    参考链接:



    #include<iostream>
    using namespace  std;
    int fenjie() {
    
        int m,n;
        cout<<"请输入m:";
        cin>>m;
    
        cout<<"请输入n:";
        cin>>n;
    
        int i,j;
        int c=0;
        int d=0;
        int result=1;
        int a[100],b[100];
    
        i=2;
        while(m!=1&&i<m) { // 计算m的质因数 
    
            while(m%i==0) {
                a[c]=i;
                m=m/i;
            //    printf("a[%d]=%d\n",c,a[c]);
            //    printf("i=%d,m=%d\n",i,m);
                if(m!=1) {
                    c++;
                } else {
                    break;
                }
            }
            i++;
    
        }
    
        i=2;
        while(n!=1&&i<n) {  // 计算n的质因数 
    
            while(n%i==0) {
                b[d]=i;
                n=n/i;
            //    printf("b[%d]=%d\n",d,b[d]);
            //    printf("i=%d,n=%d\n",i,n);
                if(n!=1) {
                    d++;
                } else {
                    break;
                }
            }
            i++;
    
        }
    
    
        i=0;
     // 求m和n的公共质因数 ,从m的第一个质因数逐个与n的每个质因数比较,如果相同,则累乘到结果中    
        while(i<=c) { 
            
            j=0;
            while(j<=d&&i<=c) { // 重复遍历n的每个质因数  
                
                if(a[i]==b[j]&&b[j]!=-1) {  //如果质因数相同,则累乘到结果中,同时将n的质因数数组此位置置-1,下次不再比较 
                    result*=a[i];
                //    printf("a[%d]=%d,b[%d]=%d,result=%d\n",i,a[i],j,b[j],result);
                    b[j]=-1;
                    i++;  // 判断m的下一个质因数            
                }
                j++;  // 判断n的下一个质因数 
            }
            
            i++;  // 上面的循环结束,说明需要判断m的下一个质因数了 
        }
    
        return result;
    }
    int main() {
    
        cout<<"结果为 :"<<fenjie();
        return 0;
    
    }
    
    
    
    
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 修改了问题 3月19日
  • 修改了问题 3月19日
  • 展开全部

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)