分解质因子

题目描述
把一个数分解成如干个质数相乘.
程序输入说明
有多组测试数据,每组包含一个整数N,N小于100000000
tatsuya的补充:N>=2,以EOF结束输入
程序输出说明
输出分解出的因式
tatsuya的补充:每组输入对应一行输出,因子从小到大依次排列,每两个因子以一个空格分隔
程序输入样例
6 
9
程序输出样例
2 3
3 3
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

typedef unsigned long DWORD;
 
//函数decomp_integer对n分解素因数,分解后的素数存入facArr数组,并返回因子的个数
int decomp_integer( DWORD n, DWORD facArr[])
{
    DWORD fac;      //n的可能的一个因子
    int count;
 
    if (n<4)        //4以内的数,不需要分解
    {   
        facArr[0]=n; 
        return 1;  
    }
 
    count=0;
    //下面的while循环为2试出n,直到2不是n的因子为止
    while ( (n & 1)==0) // 这里判断偶数用 (n &1)==0,这比(n % 2)==0更快
    {
        facArr[count++]=2;  
        n/=2;
    }
 
    fac=3;  //用3到sqrt(n)之间的奇数试除
    while (fac*fac<=n) // fac*fac <= n
    {
        while (n % fac==0)
        {
            facArr[count++]=fac;
            n /= fac;
        }
        fac+=2;
    }
    if (n==1)
        return count;
 
    facArr[count++]=n;
    return count;
}
 
int main()
{
    DWORD n,facArray[10000];
    int i,count;
    while( scanf("%u",&n) != EOF ){
        count=decomp_integer(n,facArray);
        for( i = 0; i < count; i++ )
            cout<<facArray[i]<<" ";
        cout<<endl;
    }
    return 0;
}

转载于:https://www.cnblogs.com/geziyu/p/10152921.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值