求解质因子(模板)

【基础】质因子
时间限制: 1.000 Sec 内存限制: 16 MB
题目描述
任意输入一正整数N,求出它的所有质因子。如:10=(2 5);20=(2 2 5)。
输入
输入只有一行,包括1个整数n (1<n<32768 )。
输出
输出若干行,按从小到大的顺序给出这个数的所有质因子,每行一个。
样例
输入

36

输出

2
2
3
3

***题目分析:***首先要了解质因子的定义,知道求解质因子的方法,按照求解质因子的算法写成代码即可。从1到N先找出最小的质因数,如果等于本身,那么说明只有一个质因数,如果不是,那么将该质因数打印出来,并将N/该质因数作为新的N值进行运算。
质因子的定义:质因数,也叫质因子,在数论里,是指一个数的约数,并且是质数。根据算术基本定理,任何正整数皆有独一无二的质因子分解式,只有一个质因子的正整数为质数。
求解质因子算法: 
1、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
2、如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
3、如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
代码如下:
//将一个正整数分解质因数

#include<stdio.h>
int main()  
{  
    int i,n;  
    scanf("%d",&n);  
    for(i=2;i<=n;i++)  
    {  
        while(n!=i)     //若i=n,则质因数就是n本身  
        {  
            if(n%i==0)  //若i是质因数,则打印出i的值,并用商给n赋新值  
            {  
                printf("%d\n",i);  
                n=n/i;  
            }  
            else break;//若不能被i整除,则算下一个i  
        }  
    }  
    printf("%d\n",n);   //这里是打印最后一个质因数,也就是等于i时的那个  
    return 0;  
}  
  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值