当前位置: 首页 > news >正文

芜湖有没有网站建设公司吗宣传网站设计

芜湖有没有网站建设公司吗,宣传网站设计,wordpress 数据表设计,网站建设课程思政文章目录1. 素数判定2. 素数筛选法3. 质因数分解4. 求一个数的约数5. 求两个数的最大公约数#xff08;GCD#xff09;6. 求两个数的最小公倍数#xff08;LCM#xff09;1. 素数判定 判定从 2 到sqrt(n)依次能否把 n 整除#xff0c;若存在可以整除的数则说明 n 不是素数… 文章目录1. 素数判定2. 素数筛选法3. 质因数分解4. 求一个数的约数5. 求两个数的最大公约数GCD6. 求两个数的最小公倍数LCM1. 素数判定 判定从 2 到sqrt(n)依次能否把 n 整除若存在可以整除的数则说明 n 不是素数若都不可以整除则说明 n 是素数。 注意2 是特殊的素数。 为什么到sqrt(n)就可以了呢请观察下面两个合数的例子 30 分解为两个因数相乘 2 x 153 x 105 x 66 x 510 x 315 x 2 36 分解为两个因数相乘 2 x 183 x 124 x 96 x 69 x 412 x 318 x 2 发现当越过sqrt(n)后得到的两个因数与sqrt(n)前相同只是位置对调了而已因此没有必要对sqrt(n)后的数进行试除。 #include cstdio #include cmath using namespace std;bool isPrime (int x){if (x 2)return true;else{int bound sqrt(x);for (int i 2; i bound; i)if (x % i 0) return false;}return true; }int main(){int n;while (scanf(%d, n) ! EOF){bool flag isPrime(n);if (flag)printf(Yes\n);elseprintf(No\n);}return 0; }2. 素数筛选法 原理 2 是素数把 2 后面所有能被 2 整除的数都划去2 后面第一个没划去的数是 3把 3 留下3 后面所有能被 3 整除的数都划去3 后面第一个没划去的数是 5把 5 留下5 后面所有能被 5 整除的数都划去5 后面第一个没划去的数是 7把 7 留下7 后面所有能被 7 整除的数都划去… 注意每次划去当前质数的倍数时可能存在某些数被重复筛选的情况如 8 既被 2 又被 4 筛选。在枚举筛选的时候可以进行剪枝当 i 为素数时注意到i * k (k i)必定已经在求得 k 的某个素数因子时被标记过因此可以从i * i开始。 #include math.h #include stdio.h #include string.h#define MAX 10000bool isPrime[MAX1];int main(){int n;scanf(%d, n);memset(isPrime, true, sizeof(isPrime)); // memset函数包含于string.h头文件中 for (int i 2; i sqrt(n); i){if (isPrime[i]){ // 发现是素数下面将素数的倍数都标记为非素数for (int j i * i; j n; j i) // i*k(ki)必定已经在求得k的某个素数因子时被标记过因此从i*i开始 isPrime[j] false;}}for (int i 2; i n; i)if (isPrime[i]) printf(%d , i);return 0; }3. 质因数分解 输入 994输出 2 7 71代码 #include math.h #include stdio.h #include string.h#define MAX 10000bool isPrime[MAX1];int main(){int n;scanf(%d, n);memset(isPrime, true, sizeof(isPrime)); // memset函数包含于string.h头文件中 int bound sqrt(n);// 标记素数 for (int i 2; i bound; i){if (isPrime[i]){ // 发现是素数下面将素数的倍数都标记为非素数for (int j i * i; j n; j i) // i*k(ki)必定已经在求得k的某个素数因子时被标记过因此从i*i开始 isPrime[j] false;}}// 分解质因数for (int i 2; i bound; i){if (isPrime[i]){ // 如果是质数则开始试除 while (n % i 0){ // 若发现能整除则继续使用这个质数除下去 n n / i;printf(%d , i);}}} if (n 1) // 若除完后结果不是1说明剩下来的是质数 printf(%d, n);return 0; }4. 求一个数的约数 在自然数0和正整数的范围内 4的正约数有1、2、4。 6的正约数有1、2、3、6。 10的正约数有1、2、5、10。 12的正约数有1、2、3、4、6、12。 15的正约数有1、3、5、15。 18的正约数有1、2、3、6、9、18。 20的正约数有1、2、4、5、10、20。 注意一个数的约数必然包括1及其本身。 #include cstdio #include cmath using namespace std;int main(){int n;while (scanf(%d, n) ! EOF){for (int i 1; i sqrt(n); i){if (n % i 0){printf(%d %d , i, n / i);}}printf(\n);}return 0; }5. 求两个数的最大公约数GCD 辗转相除法两个整数的最大公约数等于其中较小的数和两数相除的余数的最大公约数即gcd(a,b) gcd(b, a mod b)。 基本思想分治。 原理若整数 g 为 a、b 的最大公约数则有 a g x l1 b g x m2 a、b 又可以表示为 a b x k r即a / b k···r3 把12代入到3 g x l g x m x k r即r g x (l - m x k) 注意到r a mod b因此a mod b g x (l - m x k)4 联合24这样问题变为了求 b 和 a mod b 的最大公约数 b g x m2 a mod b g x (l - m x k)5 递归写法 // 辗转相除法求最大公约数12和18的最大公约数6 int gcd (int a, int b){if (b 0)return a;elsereturn gcd(b, a % b); }非递归写法 // 辗转相除法求最大公约数12和18的最大公约数6 int gcd (int a, int b){while (b ! 0){int rem a % b;a b;b rem;}return a; }6. 求两个数的最小公倍数LCM // 求最小公倍数12和18的最小公倍数36 int lcm (int a, int b){return a * b / gcd(a, b); }
http://www.dnsts.com.cn/news/128787.html

相关文章:

  • 建设网站的功能及目的是什么意思公司禁用网站怎么做
  • 网站规划与建设心得大连网站建设报价
  • 网站建设挣钱的需要什么做汽车介绍视频的网站
  • 厦门网站建设2国家级建设网站
  • 江苏网站推广网络wordpress的安装教程
  • 本科学院网站建设方案网站域名修改
  • 公司网站门户建设技术参数表想接外包做网站
  • 做彩投网站犯法吗公司装修风格
  • 深圳好的网站制作哪家快嘉祥做网站
  • 笔记本怎么建设网站wordpress seo设置
  • 石景山老山网站建设freeserver 免费服务器申请
  • 淄博市建设工程质量协会网站中国十大劳务派遣公司
  • 广东智能网站建设费用北京学校网站建设公司
  • 饲料公司网站建设方案免费建站哪个比较好
  • 淘宝网站c 设计怎么做旅行社网站建设规划的内容
  • 广州制作网站公司哪家好wordpress主机教程
  • 北京网站备案查询python 采集 wordpress
  • 阜阳网站制作公司多少钱建设网站天河区
  • 如何更改网站的关键词珠海网站建设q479185700强涵
  • 南阳网站排名公司中国志愿者服务网站登录注册
  • 学科建设网站桂建云平台注册
  • 枣庄手机网站开发公司专业网站建设加工
  • 网站后台管理维护 不懂编程如何网站数据备份
  • 合肥网站建设策划方案企业为什么要年检
  • 网站静态生成目录 名称 建议装修推荐平台
  • 欢迎访问建设银行网站海南响应式网页建设方案
  • 毕业设计做网站教程自助网站免费建站平台
  • 苏州网站提升排名注册商标查询网
  • 网站改版解决方案wordpress可以承受多大数据
  • 三亚网站定制开发公司网站建设的十点优势