代码没问题就是结果一直为一放不了代码没办法11111112111111很简单的问题但是卡住我了有没有人帮忙看看的
3条回答 默认 最新
- a5156520 2023-03-19 11:31关注
应该是因为分解质因数和计算m和n的公共质因数那里需要改进下,修改如下:
参考链接:https://www.bejson.com/other/common_divisor/https://blog.csdn.net/weixin_39737636/article/details/116988808https://blog.csdn.net/weixin_29234423/article/details/116982469#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 c语言写的8051单片机存储器mt29的模块程序
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
- ¥250 paddleocr带斜线的0很容易识别成9
- ¥15 电子档案元素采集(tiff及PDF扫描图片)
- ¥15 flink-sql-connector-rabbitmq使用
- ¥15 zynq7015,PCIE读写延时偏大