素數問題

1.求不超過n的有限域個數,有限域數是素數的指數(使用素數篩)ios

#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.判斷是否爲素數ssh

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的乘積除最大公約數)spa

#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;
}
相關文章
相關標籤/搜索