C++ 计算C+中的汉明序列+;(只有2、3和5作为分隔符的数字序列)
可能重复:C++ 计算C+中的汉明序列+;(只有2、3和5作为分隔符的数字序列),c++,math,hamming-numbers,C++,Math,Hamming Numbers,可能重复: 我一直在为这个问题进行头脑风暴,但我就是想不出来。我需要解决以下问题: 生成以下序列,并在 序列 2、3、4、5、6、8、9、10、12、15等等。。。。。序列只有素数 2,3,5 我需要使用基本的C++,如,而不是,如果,等等,没有什么幻想。我不能简单地使用数组,因为我还不太了解它们,我想了解解决方案的代码 我不是要求一个完整的解决方案,但我要求的是指导,以通过这。。。求你了 我的问题是,如果序列中的数字可以被除2、3和5以外的任何其他素数整除,我就不知道如何检查这个数字 另外,
我一直在为这个问题进行头脑风暴,但我就是想不出来。我需要解决以下问题: 生成以下序列,并在 序列 2、3、4、5、6、8、9、10、12、15等等。。。。。序列只有素数 2,3,5 我需要使用基本的C++,如,而不是,如果,等等,没有什么幻想。我不能简单地使用数组,因为我还不太了解它们,我想了解解决方案的代码 我不是要求一个完整的解决方案,但我要求的是指导,以通过这。。。求你了 我的问题是,如果序列中的数字可以被除2、3和5以外的任何其他素数整除,我就不知道如何检查这个数字 另外,假设我检查的数字如下:
for(int i=2; i<n; i++){
if(i%2==0){
cout<<i<<", ";
}else if(i%3==0){
cout<<i<<", ";
}else if(i%5==0){
cout<<i<<", ";
}
for(int i=2;i将下一个i值存储在临时变量中,然后尽可能长地将其除以2(例如,只要i%2==0)。然后尽可能长地除以3。然后除以5。然后检查,剩下的是什么。代码的问题是,您只需检查一个基本因子,而不是全部
以14为例。您的代码只检查2,3或5是否是14的因子,这并不完全是您所需要的。事实上,您发现2是14的因子,但正如您所说,另一个因子是7。您缺少的是进一步检查7是否只有因子2,3和5(事实并非如此).你需要做的是消除所有因素2、3和5,看看还有什么剩余
让我们举两个例子:60和42
60人
从因素2开始
- 60%2=0,现在检查60/2=30
- 30%2=0,现在检查30/2=15
- 15%2=1,因此不再有2的因子
继续第三个因素
- 15%3=0,现在检查15/3=5
- 5%3=2,因此不再有3的因子
以因子5结束
- 5%5=0,现在检查5/5=1
- 1%5=1,因此不再有5的因子
我们以1结束,所以这个数字是序列的一部分
适用于42人
同样,从因素2开始
- 42%2=0,现在检查42/2=21
- 21%2=1,因此没有更多的因子2
继续第三个因素
- 21%3=0,现在检查21/3=7
- 7%3=1,因此不再有3的因子
以因子5结束
- 7%5=2,因此不再有5的因子
我们的结果是7(与1不同),所以这个数字不是序列的一部分
因此,在您的实现中,您可能应该在for循环中嵌套3个while循环来反映这种推理。这是怎么回事
bool try_hamming(int n)
{
while(n%2 == 0)
{
n = n/2;
}
while(n%3 == 0)
{
n = n/3;
}
while(n%5 == 0)
{
n = n/5;
}
return n==1;
}
当n是一个hamming numer时,应该返回true,否则返回false
#include<iostream>
using namespace std;
main()
{
for(int i=2;i<100;++i)
{
if(try_hamming(i) )
cout<< i <<",";
}
cout<<end;
}
#包括
使用名称空间std;
main()
{
对于(int i=2;我的代码出了什么问题?精确地说,完全是由同一个人复制的。好吧,所以我创建了3个while循环,但我不知道如何从那里开始……我把一切都弄明白了!老兄,这让我大脑紧张,但你确实帮了我很多,非常感谢。我刚刚完成了你编写的nd试图解决这个问题。非常感谢!是的,这和我现在得到的差不多。我在一个函数中做了一个,但这个也可以。