对于一个自然数,求出连续的自然数段相乘之积为该自然数

对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之积为M

例子:12345=120,所以从1到5的一个自然数段为M=120的一个解。

输入
一个整型M(0

输出
一行输出一种组合,同一行中数与数之间空格隔开
多个解按第一个从小到大排序

img

img


#include "stdio.h"
#include "math.h"
int main()
{
    int m, i, j, s, res=0;
    scanf("%d", &m);
    for (i = 1; i <=1+ (int)sqrt((double)m); i++)
    {
        s = 1;
        j = i;
        while (s < m)
        {
            s *= j++;
        }
        if (s == m)//输出结果
        {
            for (s = i; s < j; s++)
                printf("%d ", s);
            printf("\n");
            res = 1;
        }
    }
    if (!res) printf("NULL\n");
    return 0;
}