用C语言递归实现因数分解,比如54=3*3*3*2,不得使用循环
5条回答 默认 最新
- threenewbee 2015-12-12 13:55关注
#include <stdio.h> int isPrime(int n, int acc) { if (n == 2) return 1; if (acc == 1) return 1; if (n % acc == 0) return 0; return isPrime(n, acc - 1); } void foo(int n, int acc) { if (n % acc == 0 && isPrime(acc, acc - 1) && n == acc) { printf("%d", acc); return; } if (n % acc == 0 && isPrime(acc, acc - 1)) { printf("%d*", acc); foo(n / acc, acc); } foo(n, acc - 1); } int main() { int n = 54; foo(n, n); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器