【题意】:对一个数进行因式分解。
【思路】:打表后一个一个除,最大数是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
时间: 2024-10-14 10:19:32