|
发表于 2019-10-12 11:27:05
|
显示全部楼层
#include <stdio.h>
void main(){
//高度可约的三角形数
//三角形数数列是通过逐个加上自然数来生成的。
//例如,第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是第一个拥有超过5个约数的三角形数。
//第一个拥有超过500个约数的三角形数是多少?
int i=1,count=0;//i:从 1循环到无穷的数,count:记录三角形数有几个因数
long sum=0; //sum:i的和(三角形数)
while(1){
sum+=i;//计算出三角形数
int j;
for(j=1;j<=sum;j++){//从 1到 这个三角形数的循环
if(sum%j==0){//找能整除的数的个数(因数个数)
count++;//如果能整除说明是因数,count+1
}
}
printf("三角形数:%d,有%d个因数\n",sum,count);//看count到几了
if(count>5){//大于5,就输出这个三角形数 ,跳出 while循环 (大于500同理)
printf("超过5个约数的三角形数:%d",sum);
break;
}else{//count记录完上一个三角形数后,要清零记录下一个
count=0;
}
i++;
}
} |
|