作者:初来乍到1231 | 来源:互联网 | 2024-11-29 16:04
中心方形数解析与实现
参考资料: GeeksforGeeks
当给定一个正整数 n 时,任务是计算第 n 个中心方形数。中心方形数是一种特殊的数字序列,表示以单一点为中心,其余点按照连续的正方形层围绕中心点排列的点总数。
第 n 个中心方形数可以通过公式 n² + (n-1)² 计算得出。
示例:
输入: n = 2
输出: 5
输入: n = 9
输出: 145
寻找第 n 个中心方形数
深入观察可以发现,第 n 个中心方形数实际上是两个连续平方数的和。基于这一观察,我们可以通过以下公式来计算:
第 n 个中心方形数 = n² + (n-1)²
以下是几种编程语言的具体实现:
C++ 实现
#include
using namespace std;
// 函数用于计算中心方形数
int centeredSquareNumber(int n) {
return n * n + (n - 1) * (n - 1);
}
int main() {
int n = 7;
cout < return 0;
}
Java 实现
public class Main {
// 计算中心方形数的函数
public static int centeredSquareNumber(int n) {
return n * n + (n - 1) * (n - 1);
}
public static void main(String[] args) {
int n = 7;
System.out.println(n + "th Centered Square Number: " + centeredSquareNumber(n));
}
}
Python 实现
def centered_square_number(n):
# 计算第 n 个中心方形数
return n * n + (n - 1) * (n - 1)
n = 7
print(f'{n}th Centered Square Number:', centered_square_number(n))
C# 实现
using System;
class Program {
// 计算中心方形数的函数
static int CenteredSquareNumber(int n) {
return n * n + (n - 1) * (n - 1);
}
static void Main() {
int n = 7;
Console.WriteLine(n + "th Centered Square Number: " + CenteredSquareNumber(n));
}
}
PHP 实现
function centeredSquareNumber($n) {
// 计算第 n 个中心方形数
return $n * $n + ($n - 1) * ($n - 1);
}
$n = 7;
echo $n . 'th Centered Square Number: ' . centeredSquareNumber($n);
?>
输出结果:
7th Centered Square Number: 85
判断一个数是否为中心方形数
前几个中心方形数包括:1, 5, 13, 25, 41, 61, 85, 113, 145, 181, ... 等等。给定一个数 N,可以通过解方程 H(n) = n * n + (n - 1) * (n - 1) = N 来判断 N 是否为中心方形数。
使用求根公式解上述方程,可以得到:
n = (9 + sqrt(36 * N + 45)) / 18
如果 n 是一个整数,则 N 是中心方形数;否则不是。
C++ 实现
#include
#include
using namespace std;
bool isCenteredSquareNumber(int N) {
float n = (9 + sqrt(36 * N + 45)) / 18;
return (n - (int)n) == 0;
}
int main() {
int i = 13;
cout < return 0;
}
Java 实现
public class Main {
public static boolean isCenteredSquareNumber(int N) {
double n = (9 + Math.sqrt(36 * N + 45)) / 18;
return (n - (int)n) == 0;
}
public static void main(String[] args) {
int i = 13;
System.out.println(isCenteredSquareNumber(i));
}
}
Python 实现
import math
def is_centered_square_number(N):
n = (9 + math.sqrt(36 * N + 45)) / 18
return (n - int(n)) == 0
i = 13
print(is_centered_square_number(i))
C# 实现
using System;
class Program {
public static bool IsCenteredSquareNumber(int N) {
double n = (9 + Math.Sqrt(36 * N + 45)) / 18;
return (n - (int)n) == 0;
}
static void Main() {
int i = 13;
Console.WriteLine(IsCenteredSquareNumber(i));
}
}
输出结果:
False
参考文献: Wikipedia: Centered Square Number