【基础】质因子
时间限制: 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;
}