c语言题把1,2,3,4,5,6,7,8,9组合成三个三位数,要求每个数字仅用一次,并且每个三位数均是完全平方数
C语言程序如下:
int main(){
char temp[3];
for(int i = 123;i<=987;i++){
itoa(i, temp, 10);//转换成string
if(temp[0] != temp[1] && temp[0] != temp[2] && temp[1] != temp[2]){
int a = sqrt(i);
if(a * a == i){
std::cout << i << std::endl;
}
}
}
return 0;
}
扩展资料:
完全平方数性质如下:
(1)、平方数的个位数字只能是 0, 1,4,5,6,9 。
(2)、任何偶数的平方一定能被 4 整除;任何奇数的平方被 4(或 8)除余 1,即被4 除余 2 或 3 的数一定不是完全平方数。
(3)、完全平方数的个位数字是奇数时,其十位上的数字必为偶数。完全平方数的个位数字是 6 时,其十位数字必为奇数。
(4)、凡个位数字是 5 但末两位数字不是 25 的自然数不是完全平方数;末尾只有奇数个 0 的自然数不是完全平方数;个位数字是 1,4,9 而十位数字为奇数的自然数不是完全平方数。
(5)、除 1 外,一个完全平方数分解质因数后,各个质因数的指数都是偶数,如果一个数质分解后, 各个指数都为偶数, 那么它肯定是个平方数。 完全平方数的所有因数的总个数是奇数个。因数个数为奇数的自然数一定是完全平方数。
参考资料:百度百科-完全平方数
#include<stdio.h>
int main(void)
{
int i, j, k, n, m;
for (i = 1; i <= 9; ++i)
{
for (j = 1; j <= 9; ++j)
{
if (i == j)
{
continue;
}
for (k = 1; k <= 9; ++k)
{
if (i == k || j == k)
{
continue;
}
n = i * 100 + j * 10 + k;
m = 1;
while (m * m <= n)
{
if (m * m == n)
{
printf("%d\n", n);
}
m++;
}
}
}
}
return 0;
}
#include <string>
int main(){
char temp[3];
for(int i = 123;i<=987;i++){
itoa(i, temp, 10);//转换成string
if(temp[0] != temp[1] && temp[0] != temp[2] && temp[1] != temp[2]){
int a = sqrt(i);
if(a * a == i){
std::cout << i << std::endl;
}
}
}
return 0;
}