zoukankan      html  css  js  c++  java
  • 数论题目

    P1082 同余方程

    即求a模b的逆元x
    因为x在模b意义下唯一,所以最小整数解即逆元

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    #include<cstring>
    #define R register
    #define EN printf("\n")
    #define LL long long
    inline LL read(){
    	LL x=0,y=1;
    	char c=getchar();
    	while(c<'0'||c>'9'){if(c=='-') y=-1;c=getchar();}
    	while(c>='0'&&c<='9'){x=x*10+(c^48);c=getchar();}
    	return x*y;
    }
    int gcd(LL a,LL b,LL& x,LL& y){
    	if(b){
    		int d=gcd(b,a%b,y,x);
    		//d=y*b+x*(a%b)
    		//d=y*b+x*(a-(a/b)*b)
    		//d=y*b+x*a-x*(a/b)*b
    		//d=x*a+(y-(a/b)*x)*b
    		y-=(a/b)*x;
    		return d;
    	}
    	x=1;y=0;
    	//赋值后,上一层的d=0*0+a*1=a
    	return a;
    }
    int main(){
    	LL a=read(),b=read(),x,y;
    	gcd(a,b,x,y);
    	while(x<0) x+=b;
    	x%=b;
    	printf("%lld",x);
    	return 0;
    }
    

    P1043 约数研究

    求1到n每个数的约数个数和
    因为约数个数和等于倍数个数和(一个整除关系,可以看作约数关系或倍数关系,即约数和倍数一一对应)
    所以答案为\(\sum_{i=1}^n \lfloor \frac{n}{i} \rfloor\)

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<stack>
    #include<iomanip>
    #include<cstring>
    #define R register
    #define LL long long
    inline int read(){
    	int x=0,y=1;
    	char c=getchar();
    	while(c<'0'||c>'9'){
    		if(c=='-') y=-1;
    		c=getchar();
    	}
    	while(c>='0'&&c<='9'){
    		x=x*10+(c^48);
    		c=getchar();
    	}
    	return x*y;
    }
    int n;
    LL ans;
    int main(){
    	n=read();
    	for(R int i=1;i<=n;i++) ans+=n/i;
    	printf("%lld",ans);
    	return 0;
    }
    

    SP2 PRIME1 - Prime Generator

    求m,n之间的质数
    因为要判断的数都小于等于n,所以如果是合数,一定有质因数小于等于\(\sqrt{n}\)
    所以先求出这些质数,再在m到n的区间里用它们试除暴力筛

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    #include<cstring>
    #define R register
    #define EN printf("\n")
    #define LL long long
    inline int read(){
    	int x=0,y=1;
    	char c=getchar();
    	while(c<'0'||c>'9'){if(c=='-') y=-1;c=getchar();}
    	while(c>='0'&&c<='9'){x=x*10+(c^48);c=getchar();}
    	return x*y;
    }
    const int sqrtn=35000;
    int n,m,prime[10006],notpr[35000];
    inline void getprime(){
    	for(R int i=2;i<=sqrtn;i++){
    		if(!notpr[i]) prime[++prime[0]]=i;
    		for(R int j=1;j<=prime[0]&&i*prime[j]<=sqrtn;j++){
    			notpr[i*prime[j]]=1;
    			if(!(i%prime[j])) break;
    		}
    	}
    }
    inline void isprime(int num){
    	if(num==1) return;
    	int sqrt=std::sqrt(num);
    	for(R int i=1;i<=prime[0]&&prime[i]<=sqrt;i++)
    		if(!(num%prime[i])) return;
    	printf("%d\n",num);
    }
    int main(){
    	int t=read();
    	getprime();
    	while(t--){
    		m=read();n=read();
    		for(R int i=m;i<=n;i++) isprime(i);
    		EN;
    	}
    	return 0;
    }
    
  • 相关阅读:
    axios基本用法
    Iframe父子窗口之间的跨域事件调用和传值
    js 比较两个日期的大小
    小程序webview实践
    小程序入口构造工具&二维码测试工具
    小程序无限层级路由方案
    TypeScript基础类型,类实例和函数类型声明
    小程序多业务线融合【完整分包业务接入】
    浅谈React16框架
    CSS Modules 与 scoped 的不一样
  • 原文地址:https://www.cnblogs.com/suxxsfe/p/12527055.html
Copyright © 2011-2022 走看看