迭代算法4——精确迭代法之角谷猜想


输入一个正整数,求出角谷猜想过程中的每一个数。

【定义】

角谷猜想。日本数学家角谷静夫在研究自然数时发现了一个现象:对于任意一个自然数n,如果m为偶数,则将其除以2;如果n为奇数则将其乘以3,然后再加1。按照上述方法经过有限次运算后,总可以得到自然数1。人们将角谷静夫的这一发现称为“角谷猜想”。

例如对于自然数21,因为21是奇数,先将其乘以3,再加上1,得到64。64是偶数除以2,得到32。因32是偶数,除以2得到还是偶数,如此继续下去,直到为1。

21-->64-->32-->16-->8-->4-->2-->1

【分析】

任何一个数的角谷猜想过程步骤如下:

当n不为1,如果n为偶数,则使n除以2,并用商取代n,输出商;如果n为奇数,则使n乘以3加1取代n,并输出该值。当n为1,算法结束。

code:

#include<stdio.h>
#include <iostream>
void main()
{
	int n;
	printf("请输入一个正整数:");
	scanf("%d", &n);
	printf("角谷猜想过程中的每一个数:\n%d", n);
	while (n != 1)
	{
		if (n % 2 == 0)
		{
			n /= 2;
			printf("->%d", n);
		}
		else
		{
			n = n * 3 + 1;
			printf("->%d", n);
		}
	}
	printf("\n");
	system("pause");
}

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值