题意就是给你一个数让你找它的正因子个数(包括自身,不包括1),这个地方用到一个公式,如果不用的话按正常思路来写会TL什么的反正就是不容易写对。

求任意一个大于1的整数的正因子个数

首先任意一个数n,n=P1^a1 * P2^a2 * P3^a3 *……Pn^an;

任意的整数n可以分解为m个素数ai次幂的连续乘机,这个地方解释不清自己再理解一下(Pi都为素数,依次往后pi越来越大,ai就是次幂,自己可以找几个任意整数n来套一下这个公式就会明白了)

然后正因子个数和:sum=(1+a1)*(1+a2)*(1+a3)……*(1+an);

用这两个公式本题就可以轻松解决啦(这里还是不清楚的就套几个数就理解这两个公式了,是完全正确的哦);

AC代码如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int pri[];
int tt[];
int s=;
void dabiao() //打个素数表会节省很多时间
{ int j;
memset(tt,,sizeof(tt));
tt[]=;
tt[]=;
for(int i=;i<=;i++)
{
if(tt[i]!=)
{
pri[s++]=i;
for(j=i+i;j<=;j+=i)
tt[j]=;
}
}
return ;
}
int main()
{
int m,i,j,k,t,cas=;
long long n,num,ans;
scanf("%d",&t);
dabiao();
while(t--)
{
scanf("%lld",&n);
num=;
for(i=;i<s&&pri[i]*pri[i]<=n;i++)
{
ans=;
if(n%pri[i]==)
{ while(n%pri[i]==)//此处就是来找素数的N次幂,存起来相乘来计算SUM
{
ans++;
n/=pri[i];
} }
num=num*(ans+);
}
if(n>)//这个地方就不解释啦,自己想想咯
num*=;
printf("Case %d: %lld\n",++cas,num-);
}
return ;
}

最新文章

  1. javascript的 Object 和 Function
  2. input placeholder属性IE、360浏览器兼容性问题
  3. An Example of On-Error Trigger in Oracle Forms
  4. 19、android面试题整理(自己给自己充充电吧)
  5. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
  6. [原创][下载]Senparc.Weixin.MP-微信公众平台SDK(C#) - 已支持微信6.x API
  7. interrupt &amp; storage &amp; DMA
  8. 嵌入jetty到Java代码
  9. 关于redis的主从、哨兵、集群
  10. ASP微信开发获取用户经纬度
  11. Springboot+resteasy定时任务
  12. 如何定制 Calico 网络 Policy - 每天5分钟玩转 Docker 容器技术(70)
  13. Nova控制节点集群
  14. ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
  15. 图像检索:FCTH(Fuzzy Color and Texture Histogram)算法
  16. python3学习笔记3---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/
  17. 第一次OO总结
  18. python 安装pip
  19. 蓝鲸DevOps深度解析系列(1):蓝盾平台总览
  20. Upgrade Win10

热门文章

  1. spring总结之一(spring开发步骤、bean对象的管理、bean生命周期)
  2. Web开发笔记 #07# Swagger Editor
  3. django后台管理-ModelAdmin对象
  4. ELK学习笔记之F5利用ELK进行应用数据挖掘系列(1)-HTTP
  5. sql存储过程算法
  6. python简说(十四)内置函数
  7. mtr 命令
  8. [内核驱动] DOS路径转化为NT路径
  9. Win32汇编学习(4):绘制文本
  10. 推荐一个静态博客兼笔记的工具:WDTP