高度可除的三角数
三角数即由依次排列的自然数的和构成,所以第 7 个三角数是 1+2+3+4+5+6+7=28,前十个
三角数是:1,3,6,10,15,21,28,36,45,55,⋯,让我们列出前七个三角数的因子:
可以看出 28 是第一个因子超过 5 的三角数,求第一个因子超过 500 的三角数。
public class Triangle {
static int PrimeCount(long a){
if(a==1) return 1;
int count=0;
//快速求因子
//如果用i<=a,时间复杂度大,无法得出答案
int s=(int)Math.sqrt(a);
for(int i=1;i<=s;i++){
if(a%i==0){
count++;
int b=(int)a/i;
if(b>Math.sqrt(a)) count++;
}
}
return count;
}
public static void main(String[] args) {
int[] a=new int[50000];
a[0]=0;
for(int i=1;i<=9999999;i++){
a[i]=i+a[i-1];
if(PrimeCount(a[i])>500)
{
System.out.println(a[i]);
break;
}
}
}
}
注:时间复杂度太大得不出答案
答案是76576500
欢迎大家指出不足,嘿嘿嘿