编写一个程序,读入一个正整数,把所有那些连续的和为给定正整数的正整数找出来。
答案:2 悬赏:70 手机版
解决时间 2021-04-08 00:23
- 提问者网友:
- 2021-04-07 00:50
编写一个程序,读入一个正整数,把所有那些连续的和为给定正整数的正整数找出来。
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-04-07 02:17
经测试可以运行:
#include
void main()
{
int i;
int mubiaoshu;
int temp;
int sum=0;
while(1)
{
printf("请输入一个数:");
scanf("%d",&mubiaoshu);
for(i=1;i<=mubiaoshu /2;i++)
{
sum = i;
temp = i;
while(sum < mubiaoshu)
{
temp += 1;
sum += temp;
if(sum == mubiaoshu)
{
printf("可以得到%d到%d\n",i,temp);
break;
}
}
}
printf("\n");
}
}
#include
void main()
{
int i;
int mubiaoshu;
int temp;
int sum=0;
while(1)
{
printf("请输入一个数:");
scanf("%d",&mubiaoshu);
for(i=1;i<=mubiaoshu /2;i++)
{
sum = i;
temp = i;
while(sum < mubiaoshu)
{
temp += 1;
sum += temp;
if(sum == mubiaoshu)
{
printf("可以得到%d到%d\n",i,temp);
break;
}
}
}
printf("\n");
}
}
全部回答
- 1楼网友:风格不统一
- 2021-04-07 03:08
#include
#include
long fun(long m,long s)
{
return (-1+sqrt(1+4*m*(m-1)+8*s))/2;
}
long check(long n,long m)
{
return (n-m+1)*(n+m)/2;
}
long main()
{
long s,m,n,cnt;
while(1)
{
scanf("%ld",&s);
cnt=0;
for(m=1;m<=s/2;m++)
{
n=fun(m,s);
if(check(n,m)==s)
{
cnt++;
printf("%ld~%ld ",m,n);
}
}
printf("\n");
printf("have %ld solve!\n",cnt);
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯