约数
求一个数约数的个数
试除法求约数:
给定 nn 个正整数 aiai,对于每个整数 aiai,请你按照从小到大的顺序输出它的所有约数。
输入格式
第一行包含整数 nn。
接下来 nn 行,每行包含一个整数 aiai。
输出格式
输出共 nn 行,其中第 ii 行输出第 ii 个整数 aiai 的所有约数。
数据范围
1≤n≤1001≤n≤100,
2≤ai≤2×1092≤ai≤2×109
输入样例:
2
6
8
输出样例:
1 2 3 6
1 2 4 8
#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> ys(int n) { vector<int> res; for(int i=1;i<=n/i;i++) { if(n%i==0) { res.push_back(i); if(i!=n/i) res.push_back(n/i); } } sort(res.begin(),res.end()); return res; } int main(){ int n; cin>>n; while(n--) { int x; cin>>x; auto res=ys(x); for(auto x:res) cout<<x<<" "; cout<<endl; } return 0; }
有一个这样的一个定理:
在int范围内约数最多的大概是1500个左右
这个是约数之和
给定 nn 个正整数 aiai,请你输出这些数的乘积的约数个数,答案对 109+7109+7 取模。
输入格式
第一行包含整数 nn。
接下来 nn 行,每行包含一个整数 aiai。
输出格式
输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7109+7 取模。
数据范围
1≤n≤1001≤n≤100,
1≤ai≤2×1091≤ai≤2×109
输入样例:
3
2
6
8
输出样例:
12
#include<iostream> #include<unordered_map> using namespace std; typedef long long ll; const int mod=1e9+7; int main(){ int n; cin>>n; unordered_map<int,int> mp; while(n--) { int x; cin>>x; for(int i=2;i<=x/i;i++) { while(x%i==0) { x/=i; mp[i]++; } } if(x>1) mp[x]++; } ll sum=1; for(auto item:mp) sum=(sum*(item.second+1))%mod; cout<<sum<<endl; return 0; }
给定 nn 个正整数 aiai,请你输出这些数的乘积的约数之和,答案对 109+7109+7 取模。
输入格式
第一行包含整数 nn。
接下来 nn 行,每行包含一个整数 aiai。
输出格式
输出一个整数,表示所给正整数的乘积的约数之和,答案需对 109+7109+7 取模。
数据范围
1≤n≤1001≤n≤100,
1≤ai≤2×1091≤ai≤2×109
输入样例:
3
2
6
8
输出样例:
252
哦靠,第一次那么的佩服y总,最后算的那个步骤太厉害了,太惊艳了这个方法,我的天哪
(来自最高赞题解)
#include<iostream> #include<unordered_map> using namespace std; typedef long long ll; const int N=1e9+7; int mod=N; int main(){ unordered_map<int,int> mp; int n; cin>>n; while(n--) { int x; cin>>x; for(int i=2;i<=x/i;i++) { while(x%i==0) { x/=i; mp[i]++; } } if(x>1) mp[x]++; } ll res=1; for(auto item:mp) { auto a=item.first,b=item.second; ll t=1; while(b--) t=(t*a+1)%mod; res=res*t; } cout<<res<<endl; return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析