zoukankan      html  css  js  c++  java
  • 分解质因数

    题目描述
    今天数学课上,桐桐学习了质数的知识:一个正整数如果只能被1和它本身整除,那么这个整数便是质数。桐桐就想:任意一个正整数是否都能分解成若干个质数相乘的形式呢?输入一个正整数n,把它分解成质因子相乘的形式,如果为质数则输出该数本身。如:36=2×2×3×3;19=19。你能帮助桐桐解决这个难题吗?

    输入
    输入一个正整数n(2≤n≤109)

    输出
    把它分解成质因子相乘的形式,如果为质数则输出该数本身,乘数从小到大输出。

    样例输入
    复制样例数据
    99
    样例输出
    99=3311

    一开始,判断是素数的时候。应该5=5.我直接输出的5.真的是,以为我算法有问题。疯狂查找其他的算法。难得玩啊。

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main()
    {
        int n,i,x;
        int flag=0;
        cin>>n;
        x=sqrt(n);
        for(i=2;i<=x;i++)
        {
            if(n%i==0)
            {
                if(flag==0)
                cout<<n<<"=";
                cout<<i<<"*";
                flag=1;
                n=n/i;
                x=sqrt(n);
                i=i-1;
            }
        }
        cout<<n<<endl;
        return 0;
    }
    
    

    上面是AC之前的。

    下面是AC后的。

    #include <iostream>
    #include <cmath>
    bool isprime(int n)
    {
        int i;
        for(i=2;i*i<=n;i++)
        {
            if(n%i==0)
            return false;
        }
    
            return true;
    }
    using namespace std;
    int main()
    {
        int n,i,x,a;
        int flag=0;
        cin>>n;
        x=sqrt(n);
        a=isprime(n);
        if(!a)
        {
            for(i=2;i<=x;i++)
        {
            if(n%i==0)
            {
                if(flag==0)
                cout<<n<<"=";
                cout<<i<<"*";
                flag=1;
                n=n/i;
                x=sqrt(n);
                i=i-1;
            }
        }
        cout<<n<<endl;
        }
        if(a)
            cout<<n<<"="<<n<<endl;
    
        return 0;
    }
    

    菜鸟一枚,以前啥也没学。

  • 相关阅读:
    分段路由的复兴
    动态维护FDB表项实现VXLAN通信
    neutron dhcp 高可用
    wpf
    从0到1设计一台8bit计算机
    哇塞的Docker——vscode远程连接Docker容器进行项目开发(三)
    中通消息平台 Kafka 顺序消费线程模型的实践与优化
    飞机大战 python小项目
    看透确定性,抛弃确定性
    如何根据普通ip地址获取当前地理位置
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319604.html
Copyright © 2011-2022 走看看