/******************************************堆栈:一个数divided几个质因数(质因数的乘积为N)******************************************/
1 #include<iostream>
#include<stack>
#include<cmath>
using namespace std;
bool Prime(int n);//判断质数
int main()
{
stack<int> st;
stack<int> st2;
int n;
int item=;
int product=;
int temp;
cout<<"please input an integer"<<endl;
cin>>n;
temp=n;
for(int i=n;i>;i--)
{
if(Prime(i)==true)
st.push(i);
}
st.push(); //栈顶是最小的质数 while(product!=temp)
{
item=st.top();
while(n%item==) //直到不能再整除此质因数就跳转到下一个质因数
{
product*=item; //记录质因数的积,直到等于n
n/=item;
st2.push(item);
}
st.pop(); //每用完一个质数都弹出,获取下一个质数
} while(! st2.empty())
{
cout<<st2.top()<<" "; //逆序输出
st2.pop();
} return ;
}
bool Prime(int n)
{//判断n是否是质数
bool isPrime=true;
for(int i=sqrt(n);i>;i--)
{
isPrime=true;
if(n%i==)
{//如果有能被整除的,则不是质数
isPrime=false;
}
}
return isPrime;
}

输入2100,输出7 5 5 3 2 2

时间复杂度n+logn

【堆栈应用一】一个数divided=几个最小质因数的乘积的更多相关文章

  1. 【堆栈应用一】一个数divided=几个最小质因数的乘积(时间复杂度On)

    此算法由LQD提供

  2. java求素数和求一个数的一个正整数的质因数

    1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对? (1)程序分析:不难发现兔子的规律是:1,1 ...

  3. o(1)取b > a,且b的二进制中1的个数等于a二进制中1的个数,且使b最小

    给你一个uint32 a,让你找到另一个uint32 b,使b > a,且b的二进制中1的个数等于a二进制中1的个数.且使b最小.(数据保证可出) 1 因为1的个数不变,所以必然大于n+lowb ...

  4. Java实现k个数乘(cheng)(自然数的k乘积问题)

    k个数乘(cheng) 题目描述 桐桐想把一个自然数N分解成K个大于l的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-l)个数是N分解出来的最小自然数.例如:N=24, ...

  5. 欧拉筛法(phi,d,prime)

    筛法求素数的核心就是让每个合数被它的最小质因子筛掉,那么剩下来的就是素数了. 于是在这个过程中我们可以顺便求出每个数的φ().d().e(). ϕ:小于等于该数的与它互质的数的个数(一个数与其自身互质 ...

  6. O(1)gcd学习笔记

    设最大权值为\(M\) \(T=\sqrt M\) 定理 任意一个\(\le M\)的数一定可以表示为abc三个数的乘积 满足这三个数要么\(\le T\),要么是一个质数 证明: 考虑反证 假设\( ...

  7. 数论总结——更新ing

    数论还是有很多没学完 只是小小的总结 一.同余定理 1.反身性:\(a\equiv a (mod m)\) 2.对称性:若\(a\equiv b(mod m)\),则\(b\equiv a (mod ...

  8. JVM:如何分析线程堆栈

    英文原文:JVM: How to analyze Thread Dump 在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因.在我看来线程堆栈分析技术是Java EE产品 ...

  9. [Swift]堆栈Stack的两种版本:(1)用类包装Stack (2)用泛型包装Stack

    堆栈是一个在计算机科学中经常使用的抽象数据类型.堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列. 堆栈中定义了一些操作. 两个最重要的 ...

随机推荐

  1. [SAP ABAP开发技术总结]动态修改选择屏幕

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. HDU 2098 分拆素数和

    HDU 2098 分拆素数和 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 ...

  3. Java——Image 图片切割

    package com.tb.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io ...

  4. VS生成事件

    源自:http://www.cnblogs.com/FreeDong/p/3406737.html 如果说磨刀不误砍柴工,同样用好Visual Studio,会大大增加咱.NET程序猿效率.本文说的就 ...

  5. Ubuntu 安装hadoop 伪分布式

    一.安装JDK  : http://www.cnblogs.com/E-star/p/4437788.html 二.配置SSH免密码登录1.安装所需软件        sudo apt-get ins ...

  6. CentOS用yum快速安装nginx

    增加nginx源 vim  /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/ ...

  7. JavaSE复习_6 枚举类

    △单例类是指只有一个实例,而枚举类实际上就是有有限个实例的类,在类里已经把实例定义好了. △枚举类的三种创建形式: 1) enum Week { MON,TUE,WED;//枚举类有默认构造函数创建的 ...

  8. Tomcat:配置虚拟目录或主目录

    为了在访问web服务的时候,不需要输入项目名,直接"/"就可以访问的话,需要设置虚拟目录或在ROOT下直接放项目 1.采用虚拟目录的方式 在Host中添加  <Context ...

  9. Java中的Double类型计算

    一.问题的提出: 如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        Sy ...

  10. mybatis动态SQL中的sql片段

    在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)< ...