两种方法,第一种是将所有的素数筛选出来,第二种直接循环就行了(第二种更加的高效)。

第一种方法其实就是先将素数筛选出来然后再计算,第二种是直接计算。

第一种的代码

#include<bits/stdc++.h>
using namespace std;
const int Max = 1e7+7;
bool prim[Max];
vector <int> ve;
//素数筛选
void pre_prim()
{for(int i=2;i*i<=Max;i++){if(!prim[i]){ve.push_back(i);for(int j=i;j<Max;j+=i)prim[j] = true;}}
}
int main()
{pre_prim();long long n;while(~scanf("%lld",&n)){vector<int>::iterator iter;for(iter=ve.begin();iter!=ve.end();iter++){if(n%*iter == 0){while(n%*iter == 0){printf("%d ",*iter);n /= *iter;}}}if(n!=1)printf("%lld",n);printf("\n");}
}
第二种方法的代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{ll n;while(~scanf("%lld",&n)){for(int i=2;i*i<=n;i++){if(n%i == 0){while(n%i == 0){printf("%d ",i);n/=i;}}}if(n!=1)printf("%lld",n);printf("\n");}return 0;
}

数学算法:求一个数的质因子相关推荐

  1. 求n!中含有质因子p的个数

    定理:  中含有质因子p的个数为  ,其中  int cal(int n, int p) {int ans = 0;while (n != 0) {ans += n / p;n /= p; //相当与 ...

  2. 求一个数的所有因子(约数)

    约数是指若整数a除以整数b(b≠0)除得的商正好是整数而没有余数,比如10的约数分别为1,2,5,10,这些数都能被10整除而没有余数,所以他们都是10的约数. 下面我们来看看约数如何求解 1.传统方 ...

  3. 真约数求法 c语言,数学:求一个数的真约数(因数)的个数及所有约数之和

    一. 我们知道,每个自然数(不包括0和1)都有2个以上的因数,因数最少的是质数(也叫素数),质数的因数是1和它本身.非质数的自然数也叫合数,它们都含有3个以上(含3个)的因数. 1.怎样求一个数有多少 ...

  4. 算法——求某个数的质因数

    求某个数的质因数,打印的格式为90=2*3*3*5. 思路为:既然我们求质因数,我们可以利用遍历的方法,用这个数从2开始除直到该数本身寻找他的因数 1.第一个问题:因为数的因数可能重复比如9=3*3. ...

  5. 埃拉托色尼筛选法c语言求最大公约数,用埃拉托色尼筛算法求两个数最大公约数C++的实现...

    #include "stdafx.h" #include "iostream" #include #include //使用埃氏筛选法求最大公约数 void s ...

  6. c语言编程因子和,用c语言求一个数的所有因子

    #include # include #define N 100 long factor(int m,int fac[],int *cp){ int c1,c2,i,k; long s; fac[0] ...

  7. 算法 求一个数的平方根

    python: #coding=utf-8 from decimal import Decimal from decimal import getcontext#设置为显示8位有效数字 getcont ...

  8. c语言算法求约数个数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include main() { int n,q,p,m,k=1,sum=0,s[99999]={2},t[99999];//n是输入 ...

  9. 求一个数的因子个数/因子和/质因子 C/C++实现

    求一个数的因子个数时间复杂度O√n ll get_number(ll x){ll num=0;for(ll i=1;i*i<=x;i++){if(x%i==0) num+=2; if(i*i== ...

最新文章

  1. 从难免的线上bug说起代码的思考
  2. 基于Pytorch和RDKit建立QSAR模型
  3. java基础练习题目
  4. 如何获取并操作listview中的控件
  5. 2016及以后的自动化测试趋势 -《测试技术六月刊》
  6. python基础(part6)--容器类型之通用操作
  7. Google Guava并发– ListenableFuture
  8. jQuery.ajax success 与 complete 区别
  9. 旋流式沉砂池计算_旋流沉砂池设计方法
  10. Linux 获取网关地址
  11. Warning:Null pointer access: The variable addStrings can only be null at this location
  12. 【深度学习系列】PaddlePaddle可视化之VisualDL
  13. 系统内核快速编译并替换的方法
  14. Extjs中EditorGridPanel修改并获取数据的两种方式
  15. python怎么实现模块化_python模块化编程与简单模块实现
  16. 基于PySnooper的一组强大的Python调试工具——snoop
  17. 剑指Offer面试题11(Java版):数值的整数次方
  18. 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读
  19. SqlSever Management Studio
  20. 使用 Python 简单获取电影天堂的电影数据 [第一个爬虫小测试]

热门文章

  1. 王教授是哪里人(c语言)
  2. 设备驱动理论详解,Linux操作系统原理与应用
  3. httpd: Syntax error on line of C:/httpd/conf/httpd.conf: Cannot load c:/php/ php5apache2_4.dll
  4. 踩坑记录:Date接收yyyy-MM-dd HH:mm:ss失败
  5. TIFF World File(TFW)格式说明
  6. 解决kali不显示网卡
  7. 【Codecs系列】编解码基础知识:广义B帧GPB简介
  8. 口罩检测标准有哪些?
  9. 浅谈对程序员的认识_我对程序员这个职业的认知偏差
  10. java数组最大值索引_java中的权限修饰符有哪些?怎么获取数组最大值?