Codeforces | 1475A Odd Divisor

【题目描述】

  给定一个整数n,判断 n 是否有大于1 的奇数因数;

【输入格式】

  第一行一个整数 t,表示测试数(1 <= t <= 1e4);

  接下来 t 行,每行一个整数 n(2 <= n <= 1e14);

【输出格式】

  若存在大于1的奇数因子,输出“YES”,否则输出“NO”;

【解题思路】

  由于 n 的范围很大,所以:

    (1)long long存储;

    (2)不可以循环遍历判断  ==》 推导有用的性质进行直接判断;

  具体性质如下:

    (1)如果一个数有大于 1 的奇数因子,则必存在大于 1 的奇数质因子;

      原因:奇数 = 奇数 * 奇数,所以一个大于 1 的奇数必然可以分解到出现奇数质因子;

    (2)如果一个数 n 没有大于 1 的奇数因子,意味着它只有偶数因子(分解质因数),但是大于 1 的偶数质数只有 2,故除非 n 是 2 的m(m >= 1)c次幂,否则一定存在大于 1 的奇数因子;

    (3)n 是 2 的幂可以二进制表示为 n & (n - 1)= 0;

     链接:https://codeforces.com/blog/entry/87188

【正确代码】

复制代码
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 
 7 int main()
 8 {
 9     int t;
10     scanf("%d", &t);
11     while(t --)
12     {
13         ll n;
14         scanf("%lld", &n);
15         if(n & (n - 1)) puts("YES");
16         else puts("NO");
17     }
18     return 0;
19 }
复制代码

 

posted @   小菜珠的成长之路  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示