#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#define LL long long
#define M 10000
#define inf 0x3f3f3f3f
#define mod 100009
using namespace std;
int is_prime(int n) // 素数判定
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0) return 0;
return n!=1;
}
vector<int>num; //存数 n 的因子 ,不按照 大小排序输出
void yueshu(int n)
{
int i,j;
int ans=0; // 某数字 n的因子的个数
for(i=1;i*i<=n;i++)
{
if(n%i==0)
{
num.push_back(i);ans++;
if(i!=n/i) num.push_back(n/i),ans++;
}
}
}
set<int>num;
void shu(int n) // 求一个数的因子,并按大小输出
{
int i;
num.clear();
for(i=1;i*i<=n;i++)
{
if(n%i==0)
{
num.insert(i);
if(n/i!=i) num.insert(n/i);
}
}
set<int>::iterator it;
for(it=num.begin();it!=num.end();it++)
printf("%d ",*it);
putchar('\n');
}
map<int ,int >res; // 迭代器it->first 中存的就是 其质因子
void prime_factor(int n) //分解 质因子
{
int i,j;
for(i=2;i*i<=n;i++)
{
while(n%i==0)
{
++res[i];
n/=i;
}
}
if(n!=1) res[n]=1;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
res.clear();
prime_factor(n);
int i,j;
map<int ,int >::iterator it;
for(it=res.begin();it!=res.end();it++)
cout <<it->first<<endl;
}
return 0;
}
基本数论
最新推荐文章于 2022-12-12 19:06:06 发布