WUST I could run!(素数筛法+欧拉函数的运用+稍微的递推)
来源:互联网 发布:乐视电视没网络能看吗 编辑:程序博客网 时间:2024/06/03 14:56
I could run!
Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lldSubmitted: 77 Accepted: 23
[Submit][Status][Web Board]
Description
ahm001 is running a function but always get TLE.
long long calc (int n){
long long res=0;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
if (gcd(i,j)==1) res+=j;
}
return res;
}
But he just can't get an AC.
Can you help him?
Input
The first line is a number T,indicating the number of the test cases.
For each test cases,there's a number n(n<=10^6).
Output
For each test case,output the value of calc(n) for a line.
Sample Input
31
2
3
Sample Output
0
2
8
2
8
题解:
这题是我很久以前做的题了,不过突然想起来这有一个很重要的知识点,当时wh学长讲的很好很清楚,一下就做出来了,学长有点久远了,所以写一个题解,就是素数筛法打表和欧拉函数的运用,gcd为最小公约数,欧拉函数:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为小于等于x的素数,设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值,若n为质数则欧拉函数值为n-1,这里用素数筛法打表同时可以求欧拉函数,节省了很多时间
代码:
#include<stdio.h>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int N=1e6+5;int a[78499],p[N],b[N];//a保存素数,p保存是否遍历过该节点,b保存欧拉函数的值long long f[N];//求得结果void ini()//素数打表+求欧拉函数{ int i,j,k=0; memset(p,0,sizeof(p)); memset(b,0,sizeof(b)); for(i=2;i<=N-5;i++) { if(!p[i]) { a[k]=i; k++; for (j=i*2;j<=N-5;j+=i) { if(!p[j]) b[j]=j; b[j]=b[j]-b[j]/i;//打表的同时完成求欧拉函数 p[j]=1; } } }}int main(){ long long i,j,k,n,t; memset(f,0,sizeof(f)); ini(); for (i=2;i<=1000000;i++) { if(!p[i])//如果数字为素数,观察式子,由于该数字与之前每一个数字都互质,多出来的数为n(n-1),n为当前数字,是素数,n-1为j从i+1到n得出为n-1趟 f[i]=f[i-1]+i*(i-1); else//为合数,不用再加一组素数,观察所求式子,多出来该数字n与与n互质的素数个数(该点的欧拉函数)的乘积 f[i]=f[i-1]+i*b[i]; } while(scanf("%lld",&t)!=EOF) { while(t--) { scanf("%lld",&n); printf("%lld\n",f[n]); } }return 0;}
阅读全文
0 0
- WUST I could run!(素数筛法+欧拉函数的运用+稍微的递推)
- 欧拉函数的递推形式
- 关于欧拉函数的递推方法的证明
- 素数筛,单点的欧拉函数,筛法求欧拉函数
- POJ 2480 欧拉函数的运用
- Calculation 2-欧拉函数的运用
- 欧拉函数简单的运用
- 欧拉函数与欧拉函数的递推总结+例题POJ2478
- 筛素数和欧拉函数的模板
- O(N)的素数筛选法和欧拉函数
- csu(欧拉函数+筛素数)
- hdu1286 找朋友 (欧拉函数+素数筛法)
- poj2478 Farey Sequence(线性筛法+欧拉函数+递推)
- (筛法求素数的灵活运用, 递推).Horace and his primes
- pku2480(欧拉函数的应用,推公式,积性函数)
- HDU 2588 GCD【欧拉函数的运用】
- sicily 1089 欧拉函数递推
- POJ 3090 欧拉函数递推
- 2.2 常量与变量
- ACM集训队论文合集挑选(转载)
- QT Creator有中文出现“常量中有换行符 ”的解决办法
- 数据压缩实验6-MPEG1音频编码
- web前端面试题
- WUST I could run!(素数筛法+欧拉函数的运用+稍微的递推)
- C++ 派生类到基类转换的可访问性(是否可以转换)
- ACdream 1070 神奇的%系列二 (数学+二分)
- HTTP与HTTPS
- 常用ANSI C标准库函数
- Jersey框架学习(一)
- DM81XX下,QT程序自启动失败
- javascript
- docker无法启动问题