/*
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,
*/
#include<iostream>
#include<stdlib.h>
using namespace std;
void fengjie(int n)
{
int i,j=n;
for(i=2;i<=n;i++)//遍历找因子
{
while(j%i==0)//循环判断将因子i取出;
//如j=8; 则先取出2,变为j=4;判断发现4仍然有因子2 ,继续取出2
{
j/=i;
cout<<i<<" * ";
}
}
cout<<"1";
}
int main()
{
int n;
cout<<"输入一个正整数: ";
cin>>n;
cout<<n<<" = ";
fengjie(n);
}
/*
一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3.编程 找出1000以内的所有完数。
*/
#include<iostream>
using namespace std;
void function(int n)
{
int count=0; //记录完数个数
for(int i=1;i<n;i++) //循环查找1-n以内的数
{
int m=i/2+1; //一个数最大的因子只能是它的一半
int sum=0; //定义sum保存因子的和
for(int j=1;j<m;j++) // 循环查找因子
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
cout<<i<<endl;
count++;
}
}
}
int main()
{
int n;
cout<<"求N以内的所有完数 输入N:";
cin>>n;
function(n);
return 0;
}