| 定义函数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");
 }
 }
 |