n是质数<=>n没有小于等于sqrt(n)的素因子
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e5+2; 5 ll n; 6 int ans[maxn]; 7 int main() 8 { 9 while(~scanf("%I64d",&n)) 10 { 11 int cnt=0; 12 for(int i=2;i*i<=n;i++) 13 { 14 if(n%i==0) 15 { 16 ans[cnt++]=i; 17 while(n%i==0) 18 { 19 n/=i; 20 } 21 } 22 } 23 if(n>1) ans[cnt++]=n; 24 for(int i=0;i<cnt;i++) 25 { 26 cout<<ans[i]<<" "; 27 } 28 cout<<endl; 29 } 30 return 0; 31 }
求一个很大的数的质因子
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e5+2; 5 bool isprime[maxn]; 6 vector<int> a[maxn]; 7 int main() 8 { 9 memset(isprime,true,sizeof(isprime)); 10 for(int i=2;i<maxn;i++) 11 { 12 if(!vis[i]) continue; 13 a[i].push_back(i); 14 for(int j=2*i;j<maxn;j+=i) 15 { 16 a[j].push_back(i); 17 vis[j]=false; 18 } 19 } 20 return 0; 21 }
求多个比较小的数的质因子
时间: 2024-10-09 22:56:43