求助大佬们
一个问题:
求一个能被1-n内所有数整除的数
1<=n<=10000
我的代码:
#include<bits/stdc++.h>
using namespace std;
const int MOD=10e8+7;
int n;
int prime[10001]={},f[10011]={},all,ans=1;
bool isprime[10001]={};
inline int sieve(int x){
int cnt=0;
for(int i=2;i<=n;++i){
if(!f[i])
prime[++cnt]=f[i]=i;
for(int j=1;j<=cnt;++j){
int temp=i*prime[j];
if(temp>x)
break;
f[temp]=prime[j];
if(f[i]==prime[j])
break;
}
}
return cnt;
}
int main(){
cin>>n;
all=sieve(n);
if(n==1||n==2){
cout<<n;
}
else if(n==3){
cout<<6;
}
else{
for(int i=2;i<=n;i++){
if(ans%i==0)
continue;
if(__gcd(i,ans)!=1)
ans=(ans%MOD*f[i]%MOD)%MOD;
else
ans=(ans%MOD*i%MOD)%MOD;
}
}
cout<<ans%MOD<<endl;
return 0;
}