代码没问题就是结果一直为一放不了代码没办法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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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系统搭建请教(跨境电商用途)