NOI 1.13.22 因子分解 题解(C++)

NOI 1.13.22 因子分解 题解(C++)

今天的题解有关递归和质数,尽管作者很讨厌递归,但还是发现递归简单,还是用了递归,此时此刻,作者只想说:我太难了~~

在这里插入图片描述

不说了,说多了都是泪啊,请听题:

NOI 1.13.22:因子分解
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个数,输出其素因子分解表达式。

输入

输入一个整数 n (2 <= n < 100)

输出

输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。

样例输入

60

样例输出

2^2*3 *5//不含空格

首先你可以看到加粗的部分是2<=n<=100,so我们可以列一个一到一百的质数表,方便使用,可以做一个.cpp打印质数表。懒得写的也可以直接使用我下面打印的质数直接复制进去:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

看看递归的伪代码吧:

//counter,用作表示几次幂
void fill(int n/*当前数*/,int num/*用于表示在考虑第几个质数*/){
   
	if(n == 1){
   //不可再分解
		if(counter == 1){
   //为一次幂
			cout<<z[num];
		}else{
   //其他次幂
			cout<&
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值