由于这道题目数据范围小,所以属于水题。可以采取暴力的做法来解决。

代码如下:

#include"bits/stdc++.h"
using namespace std;
const int maxn=;
bool tag[maxn+];
vector<int>v;int n;
bool judge(int m){
while(n%m==){
if(n==m){
printf("%d\n",m);
return true;
}
else printf("%d*",m);
n/=m;
}
return false;
}
int main(){
for(int i=;i<=maxn;i++){
if(!tag[i])v.push_back(i);
for(int j=i<<;j<=maxn;j+=i)
tag[j]=true;
}
while(~scanf("%d",&n)){
for(int i=;i<v.size();i++)
if(n%v[i]==&&judge(v[i]))
break;
}
return ;
}

但是如果把这题的数据范围加到1e8,那么用这种暴力的方法光是打一个素数表都很耗时。如何快速解决1e8的因式分解呢?可以这样想:

1e8以内的数大于1e4的质因子最多只能出现一次(因为1e4的平方等于1e8,所以如果出现一次以上就会超过1e8),而且如果这个数出现了大于1e4的质因子,那么当我们把小于1e4的质因子都除尽时,留下的就是这个大于1e4的质因子。所以我们打素数表时其实不用打到1e8,只要1e4就够了(如果范围是n就打到根号n),这样可以加速了1e4倍。

代码如下:

#include"bits/stdc++.h"
using namespace std;
const int maxn=1e4;
bool tag[maxn+];
vector<int>v;int n;
bool judge(int m){
while(n%m==){
if(n==m) return true;
else printf("%d*",m);
n/=m;
}
return false;
}
int main(){
for(int i=;i<=maxn;i++){
if(!tag[i])v.push_back(i);
for(int j=i<<;j<=maxn;j+=i)
tag[j]=true;
}
while(~scanf("%d",&n)){
for(int i=;i<v.size();i++)
if(n%v[i]==&&judge(v[i]))
break;
printf("%d\n",n);
}
return ;
}

对于这一题65535的范围maxn只要设为256就够了,其他基本没有改动

还有一种解决因式分解的方法,如果如果内存足够并且测试数据有很多组的情况下这种方式会比较优

代码如下:

#include"bits/stdc++.h"
using namespace std;
const int maxn=1e4;
const int maxm=1e8;
int tag[maxm+];
vector<int>v;int n;
int main(){
for(int i=;i<=maxn;i++){
if(!tag[i])v.push_back(i);
for(int j=i<<;j<=maxm;j+=i)
if(!tag[j])tag[j]=i;
}
while(~scanf("%d",&n)){
while(tag[n]){
printf("%d*",tag[n]);
n/=tag[n];
}
printf("%d\n",n);
}
return ;
}

HDU-1164-Eddy's research I(分解质因数)的更多相关文章

  1. hdu 1164:Eddy's research I(水题,数学题,筛法)

    Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. HDU 1164 Eddy's research I( 试除法 & 筛法改造试除法 分解整数 )

    链接:传送门 题意:给出一个整数 n ,输出整数 n 的分解成若干个素因子的方案 思路:经典的整数分解题目,这里采用试除法 和 用筛法改造后的试除法 对正整数 n 进行分解 方法一:试除法对正整数 n ...

  3. hdu 1164 Eddy's research I

    http://acm.hdu.edu.cn/showproblem.php?pid=1164 题意很简单,只是写代码的时候需要注意几个问题 一.筛选素数的时候记得用埃式筛选法,要是直接找可能会WA. ...

  4. HDU 1164 Eddy's research I

    题目链接 题意 : 给你一个数,让你用它的素数质因子表示出来. 思路 : 先打一下表,因为会有重复的质因子,所以从大到小开始找,并且找到一个之后不能就接着往下找,要再找一遍这个数. #include ...

  5. HDU 1164 Eddy&#39;s research I【素数筛选法】

    思路:将输入的这个数分成n个素数的相乘的结果,用一个数组存储起来.之后再输出就能够了 Eddy's research I Time Limit: 2000/1000 MS (Java/Others)  ...

  6. HDU 1165 Eddy's research II(给出递归公式,然后找规律)

    - Eddy's research II Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  7. HDOJ 1164 Eddy's research I(拆分成素数因子)

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  8. HDU 4497 GCD and LCM (分解质因数)

    链接 :  http://acm.hdu.edu.cn/showproblem.php?pid=4497 假设G不是L的约数 就不可能找到三个数. L的全部素因子一定包括G的全部素因子 而且次方数 ...

  9. HDOJ 1164 Eddy's research I

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  10. HDU 1165 Eddy's research II (找规律)

    题意:给定一个表达式,然后让你求表达式的值. 析:多写几个就会发现规律. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400000 ...

随机推荐

  1. java 单利模式设计原理,饿汉式懒汉式,开发中推荐饿汉式

    单例模式的设计:  1 //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象. //对象是方法被调用时,才初始化,也叫做对象的延时加载.成为:懒汉式. //Si ...

  2. pyQt 流布局的一个例子

    瀑布流布局 from PyQt5.QtCore import QPoint, QRect, QSize, Qt from PyQt5.QtWidgets import (QApplication, Q ...

  3. slideshare文档下载

    if [ x"$1" = x1 ]; then for i in {1..46}; do url_i="https://image.slidesharecdn.com/b ...

  4. UML-如何进行面向对象设计?

    1.开发者如何设计对象? 1).直接编码 2).uml图,然后编码 3).uml图,不编码 绘图要轻量的 2.并行创建若干模型 如:5分钟画交互图,5分钟画类图.反复交替 3.选择什么样的UML CA ...

  5. Java web之javascript(2020.1.6)

    1.js输出: windows.alert()---警告框 document.write()---写到html文档中 innerHTML---写到HTML元素 console.log()---写到浏览 ...

  6. deque & list

    deque 双向队列 它也是采用动态数组的方式来管理的提供了随机数组 和vector的区别 1.deque头尾两端可以开放,能够进行快速的插入和删除(vector只能在尾部进行快速的插入和删除) 2. ...

  7. ubuntu16cuda8 cuda9.0 共存

    https://blog.csdn.net/lovebyz/article/details/80704800 转载

  8. UI Automation技术获取cmd或Powershell命令提示符窗口的实时内容

    事先打开的Powershell或cmd窗口中的文本,用其他方式难以拿到.但是用UI Automation可以轻松获取.本工具在窗体上加入了一个Timer控件,每秒钟都查找桌面上是否有Powershel ...

  9. JavaScript面试题(珍爱生命,远离面试)

    1.使用 typeof bar === "object" 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊端? 使用 typeof 的弊端是显而易见的(这种弊端同使用 ...

  10. c语言中getchar的用法

    /************************************************************************* > File Name: getchar2. ...