整数因子问题

萌到你眼炸
981次浏览
2021年01月11日 10:16
最佳经验
本文由作者推荐

初中英语教材下载-斗茶歌

2021年1月11日发(作者:梁国英)


算法设计与分析实验报告

实验报告

学号:
课程名称
实验项目


姓名:
2

班级:
算法设计与分析 实验课时
整数因子问题 实验时间
大于1的正整数n可以分解为:n=x1*x2*…*xm。
例如,当n=12 时,共有8 种不同的分解式:
12=12;
12=6*2;
12=4*3;
实验目的 12=3*4;
12=3*2*2;
12=2*6;
12=2*3*2;
12=2*2*3。
编程实现对于给定的正整数n,计算n共有多少种不同的分解式。
实验环境








实验内容
(算法、程
序、步骤和
方法)










Visual C++
一、算法策略
用递归的思想解决问题。比如对12来说,第一个因子可能为
2,3, 4,6,12。将2开头的加上3开头的加4开头的加上6开头的加
上12开头的所有分解形式即可。对 2开头的,2X6=12,再递归分
解6,如此进行下去,分治的思想。

二、算法设计(步骤)
#include
long total=0;
*主函数用来输入所要分解的整数,以及调用递归函数。*
int main()
{
void solve(long n);
cout<<请输入整数n:
long n;
cin>>n;
solve(n);
cout<return 0;
}
*递归函数:当所得到的数等于1时,属于一种分解情况,分解总
数加一;然 后用循环依次用n对从2到n的数取余是否为0来确定


算法设计与分析实验报告






实验内容
(算法、程
序、步骤和
方法)
该数是否为该整数的一个因 子,如果为0则用该数对因子取商,然
后递归,总情况加一,最后可得出所有情况。*
void solve(long n)
{
if(n==1)
total++;
else
{
for(long i=2;i<=n;i++)
if(n%i==0)
solve(ni);
}
}

三、复杂度分析
时间复杂度:O(n^(1.5)logn)
空间复杂度为: O(n^0.5)
数据记录
和计算
结 论 输出的数据满足结论,用递归调用的动态规划法能够很好地解
(结 果) 决这个问题。


算法设计与分析实验报告

实验心得:通过这次实验,使我对递归方 法有了更深的理解,也让
我对C++编程更加熟悉,新掌握了几种编程思想,巩固了以往所学
小 结
的内容,知识点就是在这样的循环中得以加深印象,在练习中得以
加强理解。

指导老师

评 议
成绩评定: 指导教师签名:

甄子丹精武风云-古语


海参汤的家常做法-关于诚信的故事


毕组词-网络生活


澳门科技大学预科-挂职锻炼总结发言


公共产品理论-金色的心


卡伐蒂娜-我是什么教学反思


lol挖掘机-商铺租赁合同


动圈-预防职务犯罪心得体会