C - Co-prime
2024-10-06 17:13:12
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.
Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
·······
这道题分几步:
1、先把n用算术基本原理拆分成不同的质数,如果a~b中的数是这些质数的倍数那其肯定不与n互质,a~b的总个数减去不与n互质的数剩下来就是与n互质的数啦。
2、先计算1~a-1中与n互质的个数,再计算1~b中与n互质的个数,相减。
#include<iostream>
using namespace std;
typedef long long ll;
ll a[];
int main()
{
ll t;
cin>>t;
for(ll ii=;ii<=t;ii++)
{
ll x,y,n;
cin>>x>>y>>n;
ll num=,sum=,all=,times;
for(int i=;i*i<=n;i++) //向a数组里塞n的质因数
{
if(n%i==)
{
num++;
a[num]=i;
}
while(n%i==)
{
n=n/i;
}
}
if(n>) a[++num]=n;
for(int i=;i<(<<num);i++)
{
times=,sum=;
for(int j=;j<num;j++) //num个因数,乘了几个
{
if(&(i>>j)) //判断有没有选中第j个因数
{
sum*=a[j+];
times++;
}
}
if(sum==||sum==)
continue;
if(times%==)
{
all+=y/sum;
all-=(x-)/sum;
}
else{
all-=y/sum;
all+=(x-)/sum;
}
}
printf("Case #%lld: %lld\n",ii,y-x+-all);
}
return ;
}
以上。
最新文章
- [原创] Go语言在Centos上的部署
- WPF显示GIF图的几种方式
- std::string的split函数
- 总结--解决 mysql 中文乱码
- 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
- Android Volley框架的使用(三)
- HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和
- 非spring环境中配置文件工具
- Oracle 创建用户相关
- 微软源代码管理工具TFS2013安装与使用图文教程
- 熟人UML
- java编码GBK的不可映射字符
- 原生js实现双向数据绑定
- pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-使用说明
- 765. 有效的三角形.md
- mysql案例 ~ 主从复制延迟处理(3)
- 在微信开发中如果WeixinJSBridge.call(&#39;closeWindow&#39;);关闭窗口无效!
- [ES6] 10. Array Comprehensions
- [CF480E]Parking Lot
- Github删除项目