中易网

C++算法整数因子分解问题

答案:3  悬赏:0  
解决时间 2021-03-03 02:47
#include<iostream.h>
long total=0;
int main()
{
void solve(long n);
long n;
cin>>n;
solve(n);
cout<<total<<endl;
return 0;
}
void solve(long n)
{
if(n==1)
total++;
else
{
for(long i=2;i<=n;i++)
if(n%i==0)
solve(n/i);
}
}
这段程序的算法思想是什么
最佳答案
#include<iostream.h>
long total=0;
int main()
{
void solve(long n); //函数声明,防止编译出错

long n;
cin>>n; //从键盘输入一个整数
solve(n);
cout<<total<<endl; //输出因子数量
return 0;
}
void solve(long n)
{
if(n==1)
total++; //如果n等于1,则总数total加1
else {
for(long i=2;i<=n;i++) //从2到n循环
if(n%i==0) //如果i能整除n,则以n/i为参数递归调用函数solve
solve(n/i);
}
}
这段程序,是通过递归调用solve统计n的质因子数量,凡是solve参数==1,则前一次调用n时,整除n的因子i==n,此时i必为一个质因子。通过统计solve的参数为1的数量,来间接统计n的质因子数量
全部回答
简单的改一个地方, cout<<a<<": "<<sum<<"\n"; 改为 cout<<a<<": "<<2*sum<<"\n";  你的程序求sum时少了一倍,你再想下
关键在这里 for(long i=2;i<=n;i++) if(n%i==0) 如果能整除, 模除的结果应该是零
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
锦州师范学院
碧流台镇小博士双语幼儿园地址有知道的么?有
求助!药物流产15天行房事了怎么办?
韩晗小屋童装在什么地方啊,我要过去处理事情
凯慕狮在什么地方啊,我要过去处理事情
我的电脑经常弹警告,"0x0e021532" 指令
神画F1投影机适合家用吗与4K电视有咋不同。能
中龙坪地址在什么地方,想过去办事
如何看出奔驰宝马配件的编码
老玉匠珠宝地址有知道的么?有点事想过去
暖男地址在哪,我要去那里办事
西门子s7-200梯形图下载到PLC后如何检测是否
陕西学业水平考试与高考的关系
情伤高手请问一个女的老是推拖,敷衍你对她的
网友让做新祥贵微商是骗人的吗
推荐资讯
成都市盐道街中学高2013级基地班,试验班是哪
下小碧在哪里啊,我有事要去这个地方
A house with a dangerous gas leak can be b
为什么总是有人用巫师3比仙剑呢,有些情况是
谁已经买了p20,比x21好吗
如何用photoshop在照片上加网格
广州住房公积金贷款上限是多少,是不是二手房
张智霖唱的曲调很相似的三首歌,片片枫叶情、
广东智科电子有限公司怎么样,做设计方面能在
采购员的基本素质要求有哪些
百色职业学院(西北门)地址有知道的么?有点事
左脚遇到右脚地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?