实现连续正整数之和为某个特定值【算法】

一个正整数有可能被表示成n(n>=2)连续正整数之和如:
15=1+2+3+4+5;
15=4+5+6;
15=7+8;
请编写程序,根据输入的正整数,找出符合这种要求的所有连续正整数序列,如没有则输出none
输入:
15
输出:
1 2 3 4 5
4 5 6
7 8
输入:
16
输出:

none

#include <stdio.h> 

void FindSeqNumEqualSum(const int nNum)
{
	bool flag = true;  
    int i, j, k, sum;  

	int nMid = nNum / 2 + 1;  
  
	if(nNum > 0)
	{
		for(i = 1; i < nMid; ++ i)  
		{  
			sum = 0;  
			for(j = i; j <= nMid; ++ j)  
			{  
				sum += j;  
  
				if(sum > nNum)   
					break;  
        
				if(sum == nNum)  
				{   
					flag = false;  
					for(k = i; k <= j; ++ k)
						printf("%d ",k);				
					printf("\n");
				}
			}
		}
	}

	if(flag)
		printf("None\n"); 
}
  
int main()  
{   
	int nNum;    
    printf("please input a num:");  
  
    scanf("%d",&nNum);  
  	FindSeqNumEqualSum(nNum);
   
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值