请问该怎么优化这个程序,超时啊????
求得是输入一个数N,求i*j+i+j=N的i,j组数,(0<i<=j),0<N<10000000000;#include<stdio.h>
int main()
{
int fun(long int);
long int N;
int s=0;
scanf("%ld",&N);
printf("%d",s=fun(N));
}
int fun(long int N)
{
int s=0,i,j,k=0;
for(i=1;i<=N/2;i++){
if(i*i>N) break;
for(j=i;j<N;j++)
{
if(i*j+i+j==N)
s++;
}
}
return s;
}