题目大意:

  给你一个 n ,求出 1 到 n 中有多少个数的因数和为偶数。

解题思路:

  可以先求出因数和为奇数的数字的个数。

  由算术基本定理我们可以得到:N=P1a1P2a2P3a3 … Pnan, σ(N) = (1+p1+p12+ … +p1a1)(1+p2+p22+ … +p2a2) … (1+pn+pn2+ … +pnan). 其中各个 p 均为素数。

  我们先考虑那些因数中没有 2 的数。由于 σ(N) 为奇数,那么对于式中相乘的各项应该都是奇数,一个显而易见的事实是:除了 2 以外其他的素数均为奇数。我们随意取出一项:(1+pi+pi2+ … +piai),不难发现一个结论:如果 ai 为偶数,那么这一项的和为奇数;否则为偶数。于是我们可以大胆地推测 σ(N) 中各个非2质因数的指数均为偶数,那么这些数均为平方数,我们只需去掉 1 到 n 中的所有平方数,即可去掉那些因数中没有 2 而且因数和为奇数的数。

  如果考虑因数中有 2 的数呢?其实只需在上面求出各个平方数时顺便再乘一下 2 即可。

AC代码:

 #include<stdio.h>
#include<math.h>
typedef long long ll;
int main(){
int t;
ll n;
scanf("%d",&t);
for(int j=;j<=t;j++){
scanf("%lld",&n);
ll ans=n;
for(ll i=;i*i<=n;i++){
ans--;
if(*i*i<=n) ans--;
}
printf("Case %d: %lld\n",j,ans);
}
return ;
}

最新文章

  1. 团队开发——冲刺1.c
  2. Magento订单打印(pdf格式)
  3. javascript实例学习之六—百叶窗效果
  4. iOS开发——数据持久化&amp;本地数据的存储(使用NSCoder将对象保存到.plist文件)
  5. Delphi 7下使用Log4Delphi 0.8日志组件
  6. Code Forces 711D Directed Roads
  7. GitHub Linux下使用方法
  8. 百度经纬度和google经纬度互转
  9. JavaScript基础:创建对象
  10. 0_Simple__asyncAPI
  11. QTP10破解方法及mgn-mqt82.exe下载
  12. 深入java虚拟机学习 -- 类的加载机制(续)
  13. [转] External(and Live) snapshots with libvirt
  14. ServiceLoader详解
  15. shell爬虫--抓取某在线文档所有页面
  16. MT【68】一边柯西一边舍弃
  17. 第84讲:Scala中List和ListBuffer设计实现思考
  18. Java通过JDBC进行简单的增删改查(以MySQL为例)
  19. 20145337《网络对抗技术》逆向及BOF基础
  20. 基于EasyUi的datagrid合并单元格JS写法

热门文章

  1. apache、nginx配置openssl自签名证书
  2. 学会HTML就可以找工作了
  3. Redis(三):多机数据库的实现
  4. AngularJS学习1-基础知识
  5. iOS开发之结合asp.net webservice实现文件上传下载
  6. Eclipse 全部快捷一览表(具TM全)
  7. OSG程序设计之Hello World 2.0
  8. OSG程序设计之更新回调
  9. Java笔记(day23-day26)
  10. spring学习笔记(九)事务学习(上)