定义函数g(n)为n最大的奇数因子。 求f(n)=g(1)+g(2)+g(3)+…+g(n)
输入的n最大为100000000,我的程序运行到100000就溢出了,不知怎们改,请大神赐教,help me!
#include <stdio.h>
void main()
{
int i,j,n,k=0;
double sum=0.0;
while(scanf("%d",&n)!=EOF)
{
while(n!=1)
{
if(n%2!=0)
{
i = n/2+1;
(double)sum += i*i;
n=(n-1)/2;
}
if(n%2==0)
{
i=n/2;
(double)sum+=i*i;
n=(n+1)/2;
}
}
printf("%.0f",sum+1);
printf("\n");
}
} |