7744问题

  首先我要纠正昨天博客的一个错误,昨天的博客里我写的是 for( ; ;) 三部分内容都省略的话容易造成死循环,这是错误的说法,正确的说法是 for( ; ;) 就是一个死循环,如果不采取措施(如break ),就永远不会结束。
  输出所有形如 aabb 的 4 位完全平方数就是一个 7744 问题。
int a =1, b = 0;
for( a = 1; a <= 9; a++)
  for( b = 0; b <= 9; b++)
	if(aabb 是完全平方数)
         printf("%d\n", aabb);
这个程序并不完整,“aabb 是完全平方数” 是中文描述,并没有一个求取的过程,不是合法的 C 语言表达式。但是这个程序很容易理解,如果aabb 是完全平方数,那就输出 aabb。像这样 “不是真正程序的” 的 “代码” 成为伪代码。伪代码的主要目标就是描述算法梗概,避开细节,启发思路。
接下来我们定义 aabb 的求法: n = a*1100 + b*11,然后判断 n 是不是完全平方数,m = sqrt(n); m*m == n;
我们来看程序:
int main()
{  
	int a = 1, b = 0, n ,m;
	for( a = 1; a <= 9; a++)
		for( b = 0; b <= 9; b++)
		{
			 n = a*1100 + b*11;
			 m = floor(sqrt(n) + 0.5);     // floor:返回小于或者等于指定表达式的最大整数,为了减少误差的影响,采用四舍五入 +0.5;
			if( m*m == n)
				printf("%d\n", n);
		}
		system("pause");
		return 0;
}

运行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43223421/article/details/82820992