博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 294 (因数的个数) Divisors
阅读量:5162 次
发布时间:2019-06-13

本文共 1287 字,大约阅读时间需要 4 分钟。

题意:

求区间[L, U]的正因数的个数。

分析:

有这样一条公式,将n分解为,则n的正因数的个数为

事先打好素数表,按照上面的公式统计出最大值即可。

1 #include 
2 #include
3 4 const int maxn = 31700; 5 bool vis[maxn + 10]; 6 int prime[3450], cnt = 0; 7 8 void Init() 9 {10 int m = sqrt(maxn + 0.5);11 for(int i = 2; i <= m; ++i) if(!vis[i])12 for(int j = i * i; j <= maxn; j += i) vis[j] = true;13 for(int i = 2; i <= maxn; ++i) if(!vis[i]) prime[cnt++] = i;14 }15 16 int factor_number(int n)17 {18 int m = sqrt(n + 0.5);19 int ans = 1;20 for(int i = 0; prime[i] <= m; ++i)21 {22 int k = 1;23 while(n % prime[i] == 0)24 {25 k++;26 n /= prime[i];27 }28 ans *= k;29 }30 if(n > 1) ans <<= 1;31 return ans;32 }33 34 int main()35 {36 Init();37 int a, b, T;38 scanf("%d", &T);39 while(T--)40 {41 scanf("%d%d", &a, &b);42 int ans, temp = 0;43 for(int i = a; i <= b; ++i)44 {45 int k = factor_number(i);46 if(k > temp) { temp = k; ans = i; }47 }48 printf("Between %d and %d, %d has a maximum of %d divisors.\n", a, b, ans, temp);49 }50 51 return 0;52 }
代码君

 

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4207818.html

你可能感兴趣的文章
CocoaPods安装和使用教程
查看>>
WordPress博客搭建与问题总结
查看>>
C#中 property 与 attribute的区别
查看>>
POJ 1988 Cube Stacking(带权并查集)
查看>>
VMware vSphere虚拟化-VMware ESXi 5.5组件安装过程记录
查看>>
HDU 4960 Handling the past 2014 多校9 线段树
查看>>
时间管理-未经思考的人生不值得过
查看>>
cf 749D Leaving Auction
查看>>
[习题]验证控件(Validator)搭配 当地语系(Localization)
查看>>
XidianOJ 1213 小V的滑板鞋
查看>>
2017-2018-1 20155313 《信息安全系统设计基础》第八周课下作业2
查看>>
nginx的缓存设置提高性能
查看>>
C基础--单链表的构造
查看>>
光标定位、模糊查询
查看>>
获取Android控件ListView中被选中的某一列的值
查看>>
UVA 11374 Airport Express 机场快线 Dijistra+路径
查看>>
UIWebView 无缝切换到 WKWebView
查看>>
【python小练】0002
查看>>
【Django】不知道为什么就是想学一下 01
查看>>
C# Single Instance WinForms and Microsoft.VisualBasic.dll
查看>>