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