当n=16位的数时 在进行for循环的时候 其中判断条件 for(i=1;i<n/2;i++) 会一直循环 for(i=1;i*i<n;i++) 可以循环完毕
#include<stdio.h>
#include<math.h>
long long int yueshu[1000] ;
int geshu(long long n)
{
long long i ;
int j=0 ;
for(i=1;i<n/2;i++)// 当前情况换一直循环 当这个换成for(i=1;i*i<n;i++)时循环可以成功
{
if(n%i==0)
{
yueshu[j++] = i ;
yueshu[j++] = n/i ;
}
}
return j ;
}
int main()
{
long long int n = 2021041820210418 ;
long long int sum = geshu(n) ;
int i,j,k,total=0 ;
for(i=0;i<sum;i++)
{
for(j=0;j<sum;j++)
{
for(k=0;k<sum;k++)
{
if(yueshu[i]*yueshu[j]*yueshu[k]==n) total++ ;
}
}
}
printf("%d\n",total) ;
return 0 ;
}
没有输出
我的哥,程序运行也是需要时间的啊,也不是说无限的运算就一瞬间就可以完成,你这个循环咱就算一次循环是一纳秒完成,那也得11天多才能算完啊,怎么可能你一运行就能看到结果