赞
踩
头文件
1.abs(x):求整数的绝对值。
2.fabs(x): 求浮点数的绝对值。
3.sqrt(x):求x的平方根。
4.pow(x,y):求x的y次方。
5.ceil(x):求不小于x的最小整数。
6.floor(x):求不大于x的最大整数。
7.log(x):求x的自然对数。
8.log10(x):求以十为底x的对数。
9.sin(x):求x的正弦。
10.cos(x):求x的余弦
方法一:
时间复杂度为O(n)
bool IsPrime(int x)
{
if(x <= 1)
return false;
for(int i = 2;i < x; ++i)
if(x % i == 0 )
return false;
return true;
}
方法二:
时间复杂度为O(n^1/2)
bool IsPrime(int x)
{
int k=sqrt(x);
if(x <= 1)
return false;
for(int i = 2;i <= k; ++i)
if(x % i == 0 )
return false;
return true;
}
时间复杂度为O(n)
//求1000000以内的素数 #include<iostream> using namespace std; const int MAX_NUM=1000000+10; bool prime[MAX_NUM]; int main(){ prime[2]=true; for(int i=3;i<MAX_NUM;i+=2){ prime[i]=true; } for(int i=3;i<MAX_NUM;++i){ if(prime[i]){ for(int j=2*i;j<MAX_NUM;j+=i){ prime[j]=false; } } } for(int i=0;i<MAX_NUM;++i){ if(prime[i]) cout<<i<<" "; } return 0; }
/*使用欧拉筛法求小于等于n的素数的个数*/ #include<iostream> using namespace std; int prime[10000001]={0};//存素数 bool vis[100000001]={0};//保证不做素数的倍数 int main() { int n, cnt = 0; cin>>n; for(int i = 2; i <= n; i++){ if(!vis[i])//不是目前找到的素数的倍数 prime[cnt++] = i;//找到素数 for(int j = 0; j<cnt && i*prime[j]<=n; j++){ vis[i*prime[j]] = true;//找到的素数的倍数不访问 if(i%prime[j]==0){ break; } } } cout<<cnt<<endl; return 0; }
//求a和b的最大公因数
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
定义:把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫分解质因数。
分解对象:合数
//将一个数n分解为若干个从小到大排序的质因数的积 #include<iostream> #include<cmath> using namespace std; int main() { int n,m; cin>>n; m=n; cout<<n<<"="; if(n<2) return 0; for(int i=2;i*i<=m;++i){//i=i%2==0?i+2:i+1 while(m%i==0){ m/=i; cout<<i; if(m!=1){ cout<<"*"; } } } if(m!=1){ cout<<m; } return 0; }
运行结果:
#include<iostream> using namespace std; int main() { int x; int max=-1000000,mbx=-1000000; while((cin>>x)&&x!=0){ if(mbx<=x){ if(max<x){ mbx=max; max=x; }else{ mbx=x; } } } cout<<mbx<<endl; return 0;
bool isInt(double d){
int k=pow(10,-6);
return d-(int)d<k && -(d-(int)d) < k;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。