素数问题

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;
}

  

posted @ 2018-09-18 21:49  qczhang  阅读(299)  评论(0编辑  收藏  举报