【题目描述】
任意输入两个正整数m,n(1<m<n≤5000),依次输出m到n之间每个数的最大质因子(包括m和n;如果某个数本身是质数,则输出这个数自身)。
【输入】
一行,包含两个正整数m和n,其间以单个空格间隔。
【输出】
一行,每个整数的最大质因子,以逗号间隔。
【输入样例】
5 10
【输出样例】
5,3,7,2,3,5
#include <bits/stdc++.h>
using namespace std;
int m,n;
bool IsPrime(int num)
{
if(num<2)
return true;
for(int i=2;i<=sqrt(num);i++)
{
if(num%i==0)
return false;
}
return true;
}
int main()
{
cin>>m>>n;
bool isfirst=true;
for(int i=m;i<=n;i++)
{
for(int j=i;j>=2;j--)
{
if(IsPrime(j)&&i%j==0) //既是素数(质数)也是因子
{
if(isfirst)
isfirst=false;
else
cout<<",";
cout<<j;
break;
}
}
}
return 0;
}