数据溢出问题

[复制链接]
 楼主| 无冕之王 发表于 2013-5-24 22:01 | 显示全部楼层 |阅读模式
定义函数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");
}
}
baidudz 发表于 2013-5-24 22:12 | 显示全部楼层
各种数据类型总有溢出的时候.
如果不是正常的表示溢出, 那么你可以自己设置一个条件断点, 看原因.
火箭球迷 发表于 2013-5-24 22:24 | 显示全部楼层
sum += (double)i*i;//写成这样成不??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:喜欢远行

160

主题

3331

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部