【问题标题】:finding divisors from sequence of triangle [duplicate]从三角形序列中找到除数[重复]
【发布时间】:2011-11-24 05:19:29
【问题描述】:

可能重复:
Project Euler Problem 12 - C++

三角形数的序列是通过添加自然数生成的。因此,第 7 三角形数为 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28。

前十个术语是:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

让我们列出前七个三角形数的因数:

1: 1

3: 1,3

6: 1,2,3,6

10: 1,2,5,10

15: 1,3,5,15

21: 1,3,7,21

28: 1,2,4,7,14,28

我们可以看到,28 是第一个有五个以上除数的三角形数。什么是价值 第一个有一百多个除数的三角形数?

【问题讨论】:

  • 只是好奇,这是编程作业还是数学作业?
  • 这是一个编程任务..
  • 还没开始..我不知道如何开始...
  • 在 SO 上搜索 Project Euler 问题 12。此任务有几个问题和答案。

标签: c++


【解决方案1】:

您只是复制了问题描述!你的问题是什么?你必须说明这一点。

提出了问题“第一个有超过 100 个除数的三角形数是多少?” 只需遍历三角形数,找出每个数有多少因数。当你找到一个超过 100 个因子的时候,你就完成了。

for each whole number 'n' from 1 -> +INF
    let tn = triangleNumber(n);
    let nf = numFactors(tn);
    if (nf > 100)
        print tn " has " nf " factors.\n";
        return;

【讨论】:

  • 我还不知道如何启动它..我不确定使用'for循环'或'while..do循环'......
  • @MahadevanBlackyD,肮脏的小秘密,你使用哪个并不重要,我猜当你知道你想要迭代的范围时,for循环更常见,而当你更不确定时达到结束条件所需的迭代次数。然后是 do..while,这本身就是一个单独的案例。它们都只是一堆条件跳转的语法糖。
【解决方案2】:

首先尝试自己做。如果您无法得到答案,请理解此代码。尝试理解问题,然后尝试自己实施。首先你必须检查直到你的除数超过100,所以会有一个while循环。在里面你必须创建三角形序列,即连续数字的总和(1 + 2 + 3 + 4 + 5 + 6 + 7) .然后使用计数器并递增它来找出和的除数。

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(){
int div=0,sum=0,num,i=1,chk=0,a;
cout<<"enter the number of divisors"<<endl;
cin>>a;
while(div<=a)
{div=0;                                 
sum=sum+i;
for(int j=1;j<=sum;j++)
{if(sum%j==0)
div++;
}
chk++;
i++;
}
cout<<"Value of first triangle number value is "<<sum<<endl;
cout<<"Value of triangle number is "<<chk<<endl;
system("PAUSE");
return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多