社区讨论
求跳+求优化
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mlhfy3tv
- 此快照首次捕获于
- 2026/02/11 10:59 上周
- 此快照最后确认于
- 2026/02/11 10:59 上周
题目给定k,n<=8e6,求gcd(1,k)~gcd(n,k)
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
int k,n,cnt,f[8000010],p[8000010],ans[8000010];
signed main(){
cin >> k >> n;
f[1]=1;
ans[1]=1;
for(int i=2;i<=n;i++){
if(!f[i]){
p[++cnt]=i;
ans[i]=(k%i ? 1 : i);
}
for(int j=1;j<=cnt&&i*p[j]<=n;j++){
f[i*p[j]]=1;
if(p[j]%i==0){
if((k/ans[i])%p[j]==0) ans[i*p[j]]=ans[i]*p[j];
else ans[i*p[j]]=ans[i];
break;
}
ans[i*p[j]]=ans[i]*ans[p[j]];
}
}
for(int i=1;i<=n;i++) printf("%lld\n",ans[i]);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...