码迷,mamicode.com
首页 > 其他好文 > 详细

HDOJ 1164 Eddy's research I

时间:2015-02-23 09:42:40      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:hdoj   acm   杭电   

【题意】:对一个数进行因式分解。

【思路】:打表后一个一个除,最大数是65535,所以10000的质数范围苟用。

【AC代码】:

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;

#define MAX 10000

int cnt;
int prime_list[MAX];

int isPrime(int x)
{
    int i = 0;
    for (i = 2; i <= sqrt(x*1.0); i++)
    {
        if (0 == x%i)
            return 0;
    }
    return 1;
}

void MakeList()
{
    int i = 0;
    for (i = 2; i < 65535; i++)
    {
        if (isPrime(i))
            prime_list[cnt++] = i;
    }
}

int main()
{
    int x = 0;
    MakeList();
    while (cin >> x)
    {
        int i = 0;
        int flag = 1;
        while (x != 1)
        {
            for (i = 0; i < cnt; i++)
            {
                if (0 == x%prime_list[i])
                {
                    if (flag)
                        cout << prime_list[i];
                    if (!flag)
                        cout << "*" << prime_list[i];
                    flag = 0;
                    x /= prime_list[i];
                    break;
                }
            }
        }
        cout << endl;
    }
    return 0;
}


注意:error C2668: "sqrt" : 对重载函数的调用不明确。是由于sqrt调用里边如果是int,比如乘1.0转换成double.


HDOJ 1164 Eddy's research I

标签:hdoj   acm   杭电   

原文地址:http://blog.csdn.net/weijj6608/article/details/43909773

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!