关于for循环的问题

问题遇到的现象和发生背景

当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天多才能算完啊,怎么可能你一运行就能看到结果