1410:最大质因子序列
【题目描述】
任意输入两个正整数m,n(1<m<n≤5000)m,n(1<m<n≤5000),依次输出mm到nn之间每个数的最大质因子(包括mm和nn;如果某个数本身是质数,则输出这个数自身)。
【输入】
一行,包含两个正整数mm和nn,其间以单个空格间隔。
【输出】
一行,每个整数的最大质因子,以逗号间隔。
【输入样例】
5 10【输出样例】
5,3,7,2,3,5
代码
#include <bits/stdc++.h>
using namespace std;
int a[5001];
void prime(){
a[1]=1;a[2]=0;
for(int i=4;i<=5000;i+=2)
a[i]=1;
for(int i=3;i*i<=5000;i+=2)
for(int j=i+i;j<=5000;j+=i)
a[j]=1;
}
int maxpr(int n){
int i;
for(i=n/2+1;i>=2;i--)
if(!a[i] && n%i==0) break;
return i;
}
int main(){
int x,y,ans=0;
cin>>x>>y;
prime();
if(!a[x]) cout<<x;
else cout<<maxpr(x);
for(int i=x+1;i<=y;i++){
if(!a[i]) cout<<","<<i;
else cout<<","<<maxpr(i);
}
return 0;
}