数论/the first wave
线性筛素数(原来我之前学的不是线性的啊。。。
void getprime(){
rep(i,2,nmax){
if(!vis[i]) prime[++prime[0]]=i;
for(int j=1;j<=prime[0]&&i*prime[j]<=nmax;j++){
vis[i*prime[j]]=true;
if(i%prime[j]==0) break;
}
}
}
利用了每个合数必有一个最小素因子,每个合数仅被它的最小素因子筛去正好一次,所以是线性时间。
代码中体现在: if(i%prime[j]==0) break;(抄自M.J的blog
求欧拉函数
int getphi(int x){
int ans=x;
for(int i=2;i*i<=x;i++){
if(x%i==0) ans=ans/i*(i-1);
while(x%i==0) x/=i;
}
if(x!=1) ans=ans/x*(x-1);
return ans;
}
线性筛素数,欧拉函数。
欧拉函数性质:f(ab)=f(a)f(b);
void getphi(){
phi[1]=1;
rep(i,2,nmax){
if(!vis[i]) prime[++prime[0]]=i,phi[i]=i-1;
rep(j,1,prime[0]) {
int x=prime[j];
if(i*x>nmax) break;
vis[i*x]=true;
if(i%x==0){
phi[i*x]=phi[i]*x;break;
}else phi[i*x]=phi[i]*phi[x];
}
}
}
poj2407:求欧拉函数
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define clr(x,c) memset(x,c,sizeof(x))
int read(){
int x=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x;
}
int getphi(int x){
int ans=x;
for(int i=2;i*i<=x;i++){
if(x%i==0) ans=ans/i*(i-1);
while(x%i==0) x/=i;
}
if(x!=1) ans=ans/x*(x-1);
return ans;
}
int main(){
//rep(i,2,100) printf("%d:%d\n",i,getphi(i));
while(1){
int n=read();
if(!n) break;
printf("%d\n",getphi(n));
}
return 0;
}
poj2478:求欧拉函数前缀和
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define clr(x,c) memset(x,c,sizeof(x))
#define ll long long
int read(){
int x=0;char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return x;
}
const int nmax=1000005;
int prime[nmax],phi[nmax];
bool vis[nmax];
void getphi(){
phi[1]=1;
rep(i,2,nmax){
if(!vis[i]) prime[++prime[0]]=i,phi[i]=i-1;
rep(j,1,prime[0]) {
int x=prime[j];
if(i*x>nmax) break;
vis[i*x]=true;
if(i%x==0){
phi[i*x]=phi[i]*x;break;
}else phi[i*x]=phi[i]*phi[x];
}
}
}
int main(){
getphi();
//rep(i,1,100) printf("%d:%d\n",i,phi[i]);printf("\n");
while(1){
int n=read();
if(!n) break;
ll ans=0;
rep(i,2,n) ans+=phi[i];
printf("%lld\n",ans);
}
return 0;
}
数论/the first wave的更多相关文章
- 数论/the second wave
扩展欧几里得算法. void exgcd(int a,int b,int&x,int&y){ if(!b) { x=1;y=0;return ; } exgcd(b,a%b,x,y); ...
- RIFF和WAVE音频文件格式
RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...
- IEEE 802.11p (WAVE,Wireless Access in the Vehicular Environment)
IEEE 802.11p(又称WAVE,Wireless Access in the Vehicular Environment)是一个由IEEE 802.11标准扩充的通讯协定.这个通讯协定主要用在 ...
- Codeforces Round #382 Div. 2【数论】
C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...
- Wave - 花たん 音乐
Wave 歌手:花たん 所属专辑:Flower 間違えて宇宙終わって(宇宙因为一个错误而终结了) 青信号はいつも通り(通行的灯号一如往常的) 飛んでまた止まって(又再停止传播) また 飛びそうだ(然后 ...
- NOIP2014 uoj20解方程 数论(同余)
又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...
- Web 播放声音(AMR 、WAVE)
最近甚是苦闷,属于边学边做,跳进了很多坑,别提有多惨了,不过结果还是不错滴,纵观前后,一句话足以概括 “痛并快乐着” ~~~ ok,我少说废话,下面来总结下 Web 播放声音一些注意事项. 说到 We ...
- 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)
~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...
- 多媒体(2):WAVE文件格式分析
目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析
随机推荐
- H264学习第一篇(编码结构分析)
学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发 ...
- MySQL存储引擎 InnoDB/ MyISAM/ MERGE/ BDB 的区别
MyISAM:默认的MySQL插件式存储引擎,它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一.注意,通过更改 STORAGE_ENGINE 配置变量,能够方便地更改MySQL服务器的默认 ...
- MySQL --log-slave-updates
官方说明:--log-slave-updates Command-Line Format --log-slave-updates Option-File Format log-slave-updat ...
- ems lite 客户端远程连接mysql server
在本地用ems客户端远程连接虚拟机上的mysql server,弹出客户端没有权限访问mysql server.使用下面方法进行设置:mysql> select host,user,passwo ...
- 中文变英文字母(ios)
[_EnglishName setString:addressPerson.name]; if (CFStringTransform((__bridge CFMutableStringRef)_Eng ...
- setPreferredSize和setSize的区别及用法
我以前很喜欢borderlayout的布局方式,每次想特别调整每个区域的大小,但是每次将一个panel放入到north或者其他4个区域时,总是达不到想要的效果,刚刚才发现原来setPreferredS ...
- 使用MyBatis的resultMap高级查询时常用的方式总结
以下内容已经通过楼主测试, 从pd设计数据库到测试完成, 之前楼主也没有过Mybatis 使用resultMap觉得有点乱,最近抽出时间总结了一下也算对MyBatis的resultMap进行一次系统的 ...
- C++内存泄露调试
我在看DirectX Sample的时候,看到以下代码: // Enable run-time memory check for debug builds. #if defined(DEBUG) | ...
- vbe6ext.olb不能被加载 宏内存溢出
今天想玩一下PowerPoint的宏,却发现玩不起来!!! 另外,每次打开ppt时都会提示vbe6ext.olb不能加载. 网上说重新下载个vbe6ext.olb然后复制到相应的路径.我也试着下载,然 ...
- CodeForces 32C
额 找找规律吧 要用long long 才过. #include <cstdio> #include <algorithm> using namespace std; in ...