写到这里时我战战兢兢,因为我觉得没人会发这种无聊的文章了。
但是!
我决定还是再发一个(绝对不是为了骗阅读量和赞)
废话不多说,首先来看看什么是埃氏筛法
这是一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。(为了更直白,给大家放一张图像)
从图像中可以看到,该筛法先确定了质数,然后把它的所有倍数筛去,剩下的(1除外)就是质数
然后是这个题的要求(你可能觉得我油饼!但我们老师要求这样做!)
给定整数n,输入。
输出有若干行,每行有两个数,分别代表这个数所包含的质因数和包含的个数(从小到大顺序输出)
例如:540
2 2
3 3
5 1
实现代码如下:
#include<bits/stdc++.h>
using namespace std;
int p[10000001],p1[10000001];
int main(){
int n;
cin>>n;
p[1]=1;
int ans=0;
for(int i=2;i<10000001;i++){
if(p[i]==1) continue;
p1[++ans]=i;
for(int j=2*i;j<=10000001;j+=i){
p[j]=1;
}
}
int cnt=0;
for(int i=2;i<=n;i++){
cnt=0;
while(n%p1[i]==0){
n/=p1[i];
cnt++;
}
if(cnt!=0){
cout<<p1[i]<<" "<<cnt<<endl;
}
}
return 0;
}
完结撒花~!