从小到大依次输出n的所有因子(极速算法)

我在刷题的时候遇见一个求因子的题目,时间限制为8s(问题描述如下),我在超时好几次后思考了很久.(换个思路就可以了)

  • 查看
  • 提交
  • 统计
  • 提问
  • 总时间限制:

    8000ms

    内存限制:

    65536kB

    描述

    输入1个整数n。从小到大依次输出n的所有因子。

    输入

    1个整数n(n<20亿)

    输出

    升序输出n的所有因子,中间用空格隔开;之后再输出因子总个数。

    样例输入

    20

    样例输出

    2 4 5 10 4

    提示

    时间限制是8s

  •  先把代码给大家,供大家参考
#include
#include
#include
long long ac[100000];//用数组记录sqrt(n)之前的因子
using namespace std;
int main()
{
    long long a,b,j,h=0;
    scanf("%lld",&a);
    for(long long i=2;i=0;j--)
    {
        printf("%lld ",a/ac[j]);//(数n除一个因子等于另一个因子)
    }
    printf("%lld",2*h);
}

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(从小到大依次输出n的所有因子(极速算法))