CD无平方数
2013-10-28 21:35
99 查看
思路:就是会有重复的地方,把重复的地方找出来,相加或相减 ,
接下来有T行,每行有个整数n (1 <= n < 10^12)
1
10
30
7
19
#include<iostream> using namespace std; #define N 1010010 long long p ={0}; long long n; long long ans; int num=0; void dfs(long long s,int j,int step) { if (s*p[j]<=n) for (;p[j]*p[j]*s<=n;j++) { dfs(s*p[j]*p[j],j+1,step+1); ans+=step&1?-n/(s*p[j]*p[j]):n/(s*p[j]*p[j]); } } int main() { long long i,j,k; int t; for (i=2;i<N;i++) if (!p[i]) { for (j=i*i;j<N;j+=i) p[j]=1; } i=2; while (i<N) { if (!p[i]) p[num++]=i; i++; } cin>>t; while (t--) { cin>>n; ans=0; dfs(1,0,0); cout<<n-ans<<endl; } return 0; }
Description
无平方因子数即对于任意一个素数p,p^2都不会整除那个数,如1 , 5=5 , 15=3*5都是无平方因子数,而20=2^2*5不是。现在给定一个n (1 <= n < 10^12) ,求区间[1,n]中无平方因子数的个数。Input
第一行有个整数T,代表数据组数(T <= 10)接下来有T行,每行有个整数n (1 <= n < 10^12)
Output
输出T行,每行输出一个整数代表区间[1,n]内的无平方因子数的个数。Sample Input
31
10
30
Sample Output
17
19
相关文章推荐
- (百例编程)29.求具有abcd=(ab+cd)平方的性质数
- 求具有abcd=(ab+cd)的平方的性质的数
- unrecognized selector send to instancd 快速定位
- 1到m的平方和
- 平方和求余
- uva624 - CD(01背包+打印路径)
- POJ 2104 K-th Number(快排 or 平方分割 or 归并树—求区间第k大数)
- VMware虚拟的CENTOS系统中挂在CD/DVD驱动
- UVA 624 CD
- linux shutdown now date cd pwd mkdir rmdir shell引用
- (转)平方根的快速算法(sqrt)
- linux命令(29):cd命令
- Linux常用命令汇总--cd
- 每日一linux命令(2)-------cd
- 利用Linux Live CD更改esxi主机root密码
- 求x的平方根
- LeetCode Valid Perfect Square(是否是平方数)
- Jenkins 2.0新时代:从CI到CD
- 07.19 Linux命令 cd
- 一个简单的CD唱片管理程序