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;
    }
    

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

  • 相关阅读:
    validFrom不通过submit按钮来触发表单验证
    微信小程序组件开发
    css3 单行文字溢出,多行文字溢出
    表格布局
    对象设置默认属性
    按钮样式
    判断一个json是否为空
    vue高仿饿了么(三)
    Win10 用IE打开网址默认跳转到Edge如何解决?
    VMware虚拟机安装Win11正式版
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319604.html
Copyright © 2011-2022 走看看