最大质因子序列求解。

最大质因子序列
题目描述
任意输入两个正整数m,n(1<m<n≤5000),依次输出m到n之间每个数的最大质因子(包括m和n;如果某个数本身是质数,则输出这个数自身)。
输入格式
一行,包含两个正整数m和n,其间以单个空格间隔。
输出格式
一行,每个整数的最大质因子,以逗号间隔。
输入输出样列
输入样例1:复制
5 10
输出样例1:复制
5,3,7,2,3,5
【耗时限制】1000ms 【内存限制】64MB

#include<iostream>
#include<cmath>
using namespace std;
bool judge(int x);
int main()
{
    int m,n;
    int i,j;
 
    cin>>m>>n;
    for(i=m; i<=n; i++) 
        for(j=i; j>=2; j--) 
            if( (i%j==0) && judge(j) )
            {
                cout<<j;
                if(i!=n)
                    cout<<",";
                break;
            }
    cout<<endl;
    return 0;
}
 
bool judge(int x)//判断素数
{
    int i=2;
    for(i=2; i<=sqrt(x); i++)
        if(x%i==0)
            return false;
    return true;
}
#include <iostream>
#include <cmath>

using namespace std;

bool isprime(int x)
{
    if (x < 2)
        return false;
    int n = static_cast<int>(sqrt(x));
    for (int i = 2; i <= n; i++)
        if (x % i == 0)
            return false;
    return true;
}

int main()
{
    int m, n, c = 0;
    cin >> m >> n;
    for (int i = m; i <= n; i++)
    {
        for (int j = i; j >= 2; j--)
        {
            if (i % j == 0 && isprime(j))
            {
                if (c > 0)
                    cout << ',';
                cout << j;
                c++;
                break;
            }
        }
    }
    return 0;
}