如何检查在一个向量的整数重复
How to check for integer repetitions in a vector?
所以我试着做第一个问题。5来自欧拉项目,上面写着:2520是能被从1到10的每一个数整除而不留下余数的最小的数。
能被1到20的所有数整除的最小正数是多少?我首先尝试计算数字1-10,然后我将移动到1-20。这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
std::vector <int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
bool isPrime(unsigned int num)
{
if (num <= 2)
return true;
if ((num % 2) == 0)
return false;
unsigned sqr = (unsigned)sqrt(num);
for (unsigned i = 3; i <= sqr; i += 2) {
if (num % i == 0)
return false;
}
return true;
}
void LowestMultiple(vector<int> nums) {
for (vector< int>::iterator it = nums.begin(); it != nums.end(); it++) {
if (isPrime(*it)) {
cout << *it << endl;
}
else {
int m = *it;
int minit = *it;
std::vector<unsigned int> pfactors;
if (m % 2 == 0) {
do {
m /= 2;
} while (m % 2 == 0);
pfactors.push_back(2);
}
for (int i = 3; i <= m; i += 2) {
if (m % i == 0 && isPrime(i)) {
do {
m /= i;
} while (m % i == 0);
pfactors.push_back(i);
}
}
for (vector<unsigned int>::iterator it2 = pfactors.begin(); it2 != pfactors.end(); it2++) {
cout << minit << ":" << *it2 << endl;
}
}
}
}
int main() {
LowestMultiple(nums);
cin.get();
return 0;
}
我创建了一个包含数字1-10的所有质因数的向量,现在我需要找出每个质因数在向量中重复了多少次,然后将质因数乘以相应的次数,以得到LCM。我该怎么做呢?有没有更有效的算法来解决这个问题?
问题的结果是[1,10]的LCM
LCM (a,b) = (a*b)/GCD(a,b)其中GCD =最大公约数
typedef long long ll;
ll gcd(ll a,ll b){
if(!b)
return a;
else return gcd(b,a%b);
}
int main(){
ll ans = 1,N= 10;
for(ll i = 2;i < N; ++i)
ans = (ans * i)/gcd(ans,i);
cout<<ans<<"n";
}
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 获取向量C++中第一个值和最后一个值的和
- 从多个源构造一个对象,包括一个对象向量
- 为什么一个向量上的多线程操作很慢
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 将一个向量插入另一个向量的某个位置
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 将指向给定子类的指针从一个向量复制到另一个向量
- 如何创建一个类,以便向量工作 std::vector<MyClass<int>> v{ 1,2,3 };
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 创建一个函数的 Python 绑定,返回指向带有 boost 的向量的指针
- 紧凑向量一个小的内存足迹向量