UVa 10392 - Factoring Large Numbers

来源:互联网 发布:淘宝店名名字 编辑:程序博客网 时间:2024/05/01 16:37

传送门UVa 10392 - Factoring Large Numbers

因式分解的题目.

实在想不到什么好方法, 只好用简单粗暴的方法过.

注意题目中的这句话

You may assume that there will be at most one factor more than 1000000.

也就是说除了数本身以外所有的因子都小于1000000.

这样循环就有一个限度了.

详情见代码


#include <cstdio>#include <cmath>#include <cstring>using namespace std;int main(){    //freopen("input.txt", "r", stdin);    register long long i, n, k;    while (scanf("%lld", &n))    {        if (n < 0)            break;        //我把输入的数分两种情况处理, 仅仅是为了提高一点点的时间效率. 去掉任何一种都对.        if ((int)sqrt(n) < 1000000)        {            for (i = 2; i <= (int)sqrt(n); i++)            {                while (n % i == 0)                {                    printf("    %lld\n", i);                    n /= i;                }                if (n == 1)                    break;            }            if (n > 1)                printf("    %lld\n", n);        }        else        {            for (i = 2; i <= 1000000; i++)            {                while (n % i == 0)                {                    printf("    %lld\n", i);                    n /= i;                }                if (n == 1)                    break;            }        }        if (i > 1000000)                printf("    %lld\n", n);        printf("\n");    }    return 0;}


0 0
原创粉丝点击