Co-prime
来源:互联网 发布:学软件编程有前途吗 编辑:程序博客网 时间:2024/06/06 08:37
点击打开链接
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.
21 10 23 15 5
Case #1: 5Case #2: 10HintIn the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.
本题是求[a,b]中与n互质的数的个数,可以转换成求[1,b]中与n互质的数个数减去[1,a-1]与n互质的数的个数。同时结合二进制;
如 2 3 5 7有 2^4-1 种表示;假设0 0 0 1 说明出现了7;类推此题;
代码:
#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long
ll p[1000000];
ll sovle(ll num,int m)
{
ll ans=0,tmp,i,j,flag; //ans为不是素因子的倍数的数量;
for(i=1;i<(ll)(1<<m);i++) //选数;
{
tmp=1;//记录选中数字的乘积
flag=0; //选中数的数量;
for(j=0;j<m;j++)
if(i&((ll)(1<<j)))//检测第j个数有没有被选中;
{
flag++;
tmp*=p[j];
}
if(flag&1)//flag%2==1;表示奇数
ans+=num/tmp;
else
ans-=num/tmp;
}
return ans;
}
int main()
{
int T,t=0,m;
ll n,a,b,i,k;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&a,&b,&n);
m=0;
for(i=2;i*i<=n;i++) //分解素因子;
if(n&&n%i==0)
{
p[m++]=i;
while(n&&n%i==0)
n/=i;
}
if(n>1)
p[m++]=n;
k=b-sovle(b,m)-(a-sovle(a-1,m))+1;
printf("Case #%d: %lld\n",++t,k);
}
return 0;
}
- Co-prime
- Co-prime
- Co-prime
- Co-prime
- hdu4135 Co-prime
- hdu 4135 co-prime
- HDU 4135 Co-prime
- HDU - 4135 Co-prime
- HDU 4135 Co-prime
- hdu 4135 Co-prime
- hdoj 4135 Co-prime
- HDU 4135 Co-prime
- CFA. Co-prime Array
- 【HDU】 4135 Co-prime
- HDU - 4135 Co-prime
- HDU 4135 Co-prime
- hdoj-4135-Co-prime
- HDU-4135-Co-prime
- nyoj 题目106 :背包问题 贪心算法
- JS的快捷键应用
- 解决PHP5.6.30之curl扩展库的开启
- css盒子模型及其他元素属性简介
- 判断字符串是否为空的方法+final 字的用法:
- Co-prime
- STL
- 等雨天
- 集合
- codevs 1116 四色问题 经典 DFS
- 《零基础入门学习Python》学习过程笔记【015格式化字符串】
- 2016年全国高中数学联赛加试T2解答
- JMock实践---(五)模拟泛型类
- Co-prime——容斥原理