• 计算机考研真题 大整数的因子


    题目描述

    已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

    输入描述:

    若干个非负整数c,c的位数<=30
    每行一个c

    输出描述:

    每一个c的结果占一行
    1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
    2) 若没有这样的k则输出"none"
    
    注意整数溢出问题
    不要对-1进行计算





    //计算机考研真题 大整数的因子
    /*
    程序设计思想:
        看注释即可。
    */
    //程序实现:
    #include<iostream>
    using namespace std;
    
    int main()
    {
        string str;
        while(cin>>str)
        {
            int tmp;int i;
            for(tmp=0,i=0;i<str.size();i++)
            {
                tmp*=10;
                tmp+=(str[i]-'0');
                if(tmp>=100000000)
                    tmp%=2520;    //2520是2~9的最小公倍数
            }
            bool have=false;    //是否有因数
            for(i=2;i<=9;i++)
            {
                if(tmp%i==0)    //能整除
                {
                    if(have==false)    //第一个因数输出时前面没有空格
                        cout<<i;
                    else
                        cout<<' '<<i;
                    have=true;
                }
            }
            if(have==false)cout<<"none";
            cout<<endl;
        }
    }
    /*
    补充:
    将这几个数分解质因数
    2=2
    3=3
    4=2*2
    5=5
    6=2*3
    7=7
    8=2*2*2
    9=3*3
    然后看看后面的数是否能看成是前面若干个数相乘(不重复)可得出
    2*3*2*5*7*2*3=2520
    看上面的式子,包含2-9的质因数,所以答案应该是2520
    */
  • 相关阅读:
    超链接导航栏案例
    css中定位功能的特性
    background的使用
    数据库单表查询
    各种算法
    面向对象能做什么和特性及嵌套
    c3算法详解
    面向对象继承
    生成器
    迭代器
  • 原文地址:https://www.cnblogs.com/parzulpan/p/10055513.html
Copyright © 2020-2023  润新知