经典完全平方根问题 思路求助
#include <stdio.h>/*思路一:完全平方根的简单个人认为 如1*1,2*2,3*3....简单认为自身*自身的数,末位数0,1,4,,5,6,9*/
/*思路二:math.h这个上面有函数可直接开方*/
/*经典原题:一个10W以内的数加上100可以开方,这个数+268还能开方,这个数是多少 */
/*思路二已经实现思路一有BUG */
void main()
{
int a,i,l;
i = 100000;/*i等于十万 i自减*/
while(i>0)
{
a = i*i+100; /*i+100开方*/
while(i>0) /*a已经等于i*i+100,那么循环十万以内的 */
{
if(a = i*i);/*如果10W以内有 加过100(a)后还能 i*i相等*/
{
printf("%d",a);
a = i+268; /*i+268开方*/
break;
l = 100000;/*每次都循环10以内的数字*/
while(l>0)
{
if(a = i*i)/*如果10W以内 还能被加268那个数相等 就输出*/
{
printf("%d",a);
break;
}
i--;
}
}
i--;
}
i--;
}
} 死循环 break只是调试时候做的跳出添加的{:10_245:} 你先把if中的=换成==再说 其实就是一个简单的枚举问题。。
鉴于看到你的代码略微麻烦。。
我自己擅做主张给你写了一个。。
#include <stdio.h>
#include <math.h>
typedef long long LL;
int main()
{
LL x,y,i;
for( i = 0; i < 100010; i++ ){
x = sqrt(i + 100);
y = sqrt(i + 268);
if( (x * x == i + 100) && (y * y == i + 268 ) )
printf("i == %lld\n",i);
}
return 0;
}
BngThea 发表于 2018-4-5 21:51
你先把if中的=换成==再说
谢谢- - 我是手打上去的 改了还死循环 Rocky0429 发表于 2018-4-5 22:07
其实就是一个简单的枚举问题。。
鉴于看到你的代码略微麻烦。。
我自己擅做主张给你写了一个。。
谢谢 你代码写的漂亮用math.h中sqrt循环我也做出了 可是思路一行不通- - 理想小青年 发表于 2018-4-6 08:49
谢谢- - 我是手打上去的 改了还死循环
第一个i--应该是大写的I吧 代码可能手打上去了 有些问题 但是大佬们 思路对不对呢 对于这个数学公式来说 这种思路对不对 是不是这样嵌套循环呢{:10_266:}
思路为主 代码为辅
页:
[1]