#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);
}
}
这段程序的算法思想是什么
C++算法整数因子分解问题
答案:3 悬赏:0
解决时间 2021-03-03 02:47
- 提问者网友:小姐请专情
- 2021-03-02 09:41
最佳答案
- 二级知识专家网友:樣嘚尐年
- 2021-03-02 11:10
#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的质因子数量
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的质因子数量
全部回答
- 1楼网友:茫然不知崩溃
- 2021-03-02 13:17
简单的改一个地方, cout<<a<<": "<<sum<<"\n";
改为 cout<<a<<": "<<2*sum<<"\n";
你的程序求sum时少了一倍,你再想下
- 2楼网友:情战凌云蔡小葵
- 2021-03-02 11:54
关键在这里
for(long i=2;i<=n;i++)
if(n%i==0)
如果能整除, 模除的结果应该是零
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |