素数问题
1.求不超过n的有限域个数,有限域数是素数的指数(使用素数筛)
#include<iostream> using namespace std; int isshu[1005], iss[1005]; int main() { int n; while(cin>>n){ int res=0; for(int i=2;i<=n;++i){//素数筛,把素数都给标记出来 if(isshu[i]==0){ for(int j=i+i;j<=n;j+=i) isshu[j]=1; } } for(int i=2;i<=n;++i){ if(isshu[i]==0){ //如果是素数,则将素数的指数进行标记 for(int j=i;j<=n;j*=i) iss[j]=1; } } for(int i=2;i<=n;++i) //输出结果 if(iss[i]!=0) res++; cout<<res<<endl; } return 0; }
2.判断是否为素数
int isPrime(int k) { int j; for ( j=2; j<=sqrt(k); j++ ) { if(k%j==0) // 如果不为素数返回0 { return 0; } } return 1; // 反之则返回1 }
3.求最小公倍数(a和b的乘积除最大公约数)
#include <iostream> using namespace std; int maxyue(int a,int b){ if(b==0) return a; return maxyue(b,a%b); } int main(){ int a,b; while(cin>>a>>b){ cout<<a*b/maxyue(a,b)<<endl; } return 0; }