首页 > 代码库 > 编程算法 - 最小能被1至n整除的数 代码(C)
编程算法 - 最小能被1至n整除的数 代码(C)
最小能被1至n整除的数 代码(C)
本文地址: http://blog.csdn.net/caroline_wendy
最小能被1至n整除的数, 就是1至n所有素数的乘积.
求1至n所有素数的方法, 合数最大的质数因子, 只能在sqrt(n)以内, 可以减少遍历的范围.
时间复杂度为O(n). O(sqrt(n)*sqrt(n)).
代码:
/* * main.cpp * * Created on: 2014.7.20 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <memory.h> #include <math.h> #include <iostream> #include <vector> using namespace std; void Primes (int n, vector<int>& vi) { if (n <= 2) return; bool* a = new bool[n+1]; for (int i=1; i<=n; i++) a[i] = true; for (int i=2; i<sqrt(n); i++) { for (int j=2; j*i<=n; j++) { a[i*j] = false; } } for (int i=1; i<=n; ++i) if (a[i]) vi.push_back(i); delete[] a; } int main(void) { vector<int> vi; int n = 3; Primes(n, vi); long long min = 1; for (size_t i=0; i<vi.size(); ++i) { min *= vi[i]; } cout << "min = " << min << endl; return 0; }
输出:
min = 30030
编程算法 - 最小能被1至n整除的数 代码(C)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。