给一个非负整数,判断这个数是不是相互不同的非负整数的阶乘的和。

此为别的文章看到的   https://www.jianshu.com/p/ca4d745e7d57

题目:  给一个非负整数,判断这个数是不是相互不同的非负整数的阶乘的和。如6 = 3!;7 = 3! + 1!;但5 不是相互不同的非负整数的阶乘的和。

 

 

int main(void)
{
	int num;
	printf("请输入一个非负整数:");
	scanf("%d", &num);
	int i = 1;
	int flag = 1;
	while (num>1)
	{
		if (((num / i)*i) == num)  //判断是否可以整除 i
			num /= i;
		else
		{
			num--;
			if (((num / i)*i) == num)   // 连续两次都不能整除,就不是了
				num /= i;
			else
			{
				flag = 0;
				break;
			}
		}
		i++;
	}
	if (flag)
		printf("Yes\n");
	else
		printf("No\n");

	system("pause");
	return 0;
}

  

 

posted @ 2020-02-23 11:26  叫我妖道  阅读(502)  评论(0编辑  收藏  举报
~~加载中~~