C语言基础例题
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?#include <stdio.h>
void main()
{
int i, j, m, n, a;
for (i = 2; i < 85; i++)
{
if (168 % i == 0)
{
j = 168 / i;
if ((i > j) && (i + j) % 2 == 0 && (i - j) / 2 == 0)
{
m = (i + j) / 2;
n = (i - j) / 2;
a = n * n - 100;
printf("%d+100=%d*%d", a, n, n);
printf("%d+268=%d*%d", a, m, m);
}
}
}
}
为何输出结果为空?是判断条件写的有问题吗? 你这条件什么鬼…… 本帖最后由 jitianmoshen 于 2020-11-8 15:29 编辑
#include <stdio.h>
#include <math.h>
int main(void)
{
int i,j,k;
for (i = 10; i <= 1000; i++)
{
for (j = 0;j <= 1000;j++)
{
if ( i * i == j + 100)
{
k = sqrt(j + 168); //开方取整
if( k * k == (j + 168))
{
printf("j = %d\n",j);
break;
}
}
}
}
return 0;
} 本帖最后由 jackz007 于 2020-11-9 10:24 编辑
#include <stdio.h>
int main(void)
{
int f , i , j , x ;
for(f = 0 , x = 0 , i = 10 ; i < 10000 ; i ++) {
for(j = i + 1 ; j * j - i * i < 168 ; j ++) ;
if(j * j - i * i == 168) {
x = i * i - 100 ;
f ++ ;
break ;
}
}
if(f) {
printf("%d x %d = 100 + %d\n" , i , i , x);
printf("%d x %d = 268 + %d\n" , j , j , x);
printf("x = %d\n" , x) ;
} else printf("x not found.\n") ;
}
编译运行情况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
11 x 11 = 100 + 21
17 x 17 = 268 + 21
x = 21
D:\0002.Exercise\C> 条件是错的 本帖最后由 Dadong丶 于 2020-11-8 23:10 编辑
#include<stdio.h>
int main()
{
int i; //循环i
int a, b; // a = 100+i. b=268+i.
double x, y; // 浮点型的 x,y. 用于之后比较int型。
for (i = 0; i <= 1000; i++) // i<=1000 在1000中寻找符合提醒的完全平方数。
{
a = 100 + i;
b = 268 + i;
x = sqrt(a); //x为浮点型, 如果是完全平方数,开平方后为整数, 否则为小数。
y = sqrt(b); //同x.
if (x == (int)x && y == (int)y) //强制把 x 转换为int类型,和double的x 对比,若相等则i为完全平方数(强制转换后会舍去小数点后的数据)。
{
printf("%d\t", i);
}
}
} 本帖最后由 风过无痕1989 于 2020-11-16 01:33 编辑
出去旅游了,刚回来,看到你的题目,出于好奇,做了一下。由于你没有给定范围,这样的数太多了,我为了缩短程序运行时间,上限设为 10000,你可以根据需要,加大范围
#include <stdio.h>
void main()
{
int i, j, m,count = 0;
for (i = 1; i < 10000; i++)
{
for (j = 1;j < 10000;j++)
{
if ((i * i - 100 == j * j - 100 - 168) && (i * i - 100) > 0)
{
m = i * i - 100;
count++;
printf("%d\n", m);
break;
}
}
}
printf("\n");
printf("给定范围内符合的整数共有 %d 个\n", count);
printf("\n");
}
*************************************
21
261
1581
给定范围内符合的整数共有 3 个
请按任意键继续 . . .
页:
[1]