美文网首页
L1_006连续因子

L1_006连续因子

作者: 我好菜啊_ | 来源:发表于2018-03-15 15:18 被阅读0次

一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为356*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。


输入格式:
输入在一行中给出一个正整数N(1<N<2^31)。


输出格式:
首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1因子2……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。


  • 思路
    使用双重循环外层为因子格式内层为因子起始值
    当因子乘积可以整除N即找到
    假设连续因子有n个,从m开始
    求最长连续因子->n应该从最大的开始
    2^31=2147483648
    如果有13个因子从1开始,即为13的阶乘 6227020800>2^31
    故最多12位 for循环从12开始
    输出最小的连续因子->m从最小的2递增值N的开放

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
/*
N<=2^31=2147483648
13的阶乘是  6227020800
所以连续因子最长为12位
*/
/*阶乘要用long long来存*/
/*要求最长所以外层for循环长度递减*/
/*要求最小所以第二层for循环起始数字递增*/
int main()
{
    int N;
    scanf("%d", &N);
    int maxlen = 12;
    int start;
    int lim = sqrt(N);//因子上限
    bool flag = false;//是否存在连续因子
    int length;
    for (length = maxlen; length >= 1; --length)//注意此处1的情况也要考虑的
                                                //比如1*2*7输出的应该是2而不是7
    {
        for (start = 2; start <= lim; ++start)
        {
            int ans = 1;
            for (int k = start; k <= start + length - 1; ++k)
            {
                ans *= k;
            }
            if (N%ans == 0)
            {
                flag = true;
                break;
            }
        }
        if (flag)
            break;//注意这一层也要跳出去
    }
    if (flag)
    {
        printf("%d\n", length);
        int f = 0;
        for (int i = length,k=start; i >= 1; --i,++k)
        {
            if (f)
                printf("%c", '*');
            f = 1;
            printf("%d", k);
        }
    }
    else
    {
        //质数才输出它本身
        printf("1\n%d", N);
    }
    system("pause");
    return 0;
}

相关文章

  • L1_006连续因子

    一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为356*7,其中5、6、7就是3个连续的数字。给定...

  • A1096 Consecutive Factors (20分)

    /*题意:1、找出连续的因子,最多的个数,然后因子大小要最小输入:输入一个数字,最大是int的最大输出:输出连续依...

  • L1-006 连续因子

    题目描述 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、...

  • 随笔篇:肯定自己,坚持运动

    连续三天的居家隔离,让身体逐渐分泌一种懒惰的因子。 能躺着绝不站着,沙发和床酝酿了N多的因子。然后身体逐渐适应了,...

  • 笔记 | 投资学原理与中国市场实践 - 3.7:多因子定价模型在

    前面学习了以市场因子、市值因子、价值因子、利润因子等为代表的单因子、三因子、五因子定价模型,那么这些经典的因子定价...

  • 因子方差分析

    参考书 《白话统计学》 何时使用因子方差分析 因子方差分析适用于一个连续因变量以及两个或两个以上分类自变量的情形。...

  • L1-006. 连续因子(思想较为复杂)

    一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为356*7,其中5、6、7就是3个连续的数字。给定...

  • R语言因子2021.2.1

    因子 在R语言中,变量可以分为名义型变量,有序型变量和连续型变量。其中数值型数据更容易是连续型变量,字符串型数据更...

  • 因子模型

    CAPM模型 -- 市场因子(共同风险因子) Fama-French 三因子模型 ---市场因子、规模因子和估值...

  • 金融学习第29课——投资者决策(5)金融资产的定价因子

    (1)规模因子和价值因子 Fama-French三因子模型:市场因子,规模因子和价值因子。 市场组合代表着系统性风...

网友评论

      本文标题:L1_006连续因子

      本文链接:https://www.haomeiwen.com/subject/tlmafftx.html