测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A38318. 分解因数给出一个正整数 a, 要求分解成若干个正整数的乘积, 即 a = a1 * a2 * a3 * ... * an, 并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an, 问这样的分解的种数有多少。 注意到 a = a 也是一种分解。输入第 1 行是测试数据的组数 n, 后面跟着 n 行输入。每组测试数据占 1 行, 包括一个正整数 a (1 < a < 32768)输出n 行,…

填空题 中等

题目描述

分解因数

给出一个正整数 a, 要求分解成若干个正整数的乘积, 即 a = a1 * a2 * a3 * ... * an, 并且 1 < a1 ≤ a2 ≤ a3 ≤ ... ≤ an, 问这样的分解的种数有多少。 注意到 a = a 也是一种分解。

输入

第 1 行是测试数据的组数 n, 后面跟着 n 行输入。每组测试数据占 1 行, 包括一个正整数 a (1 < a < 32768)

输出

n 行, 每行输出对应一个输入。 输出应是一个正整数, 指明满足要求的分解的种数

样例输入

2
2
20

样例输出

1
4

参考答案

#include <iostream> using namespace std; int find(int n,int k) { int ans=1; if(n==1) { return 1; } for (int i=k;i*i<=n;i++) { if(n%i==0) { ans+=find(n/i,i); } } return ans; } int main() { int a; cin>>a; int b[a]; for (int i=0;i<a;i++) { cin>>b[i]; } for (int i=0;i<a;i++) { cout<<find(b[i],2)<<endl; } return 0; }
上一题 下一题