C++ 中计算 n 之前平方数和非平方数
给定一个数字 N。目标是找到正数的有序对,使得它们的立方和为 N。
朴素方法
遍历从 1 到 N 的所有数字,并检查它是否为完全平方数。如果 floor(sqrt(i))==ceil(sqrt(i))。
则该数字为完全平方数。
有效方法
小于 N 的完全平方数可以使用公式找到:floor(sqrt(N))。
让我们用例子来理解。
输入
N=20
输出
Count of square numbers: 4 Count of non-square numbers: 16
解释
Square numbers are 1, 4, 9 and 16. Rest all are non-squares and less than 20.
输入
N=40
输出
Count of square numbers: 6 Count of non-square numbers: 34
解释
Square numbers are 1, 4, 9, 16, 25, 36. Rest all are non-squares and less than 40.
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
朴素方法
下面程序中使用的方法如下
我们取整数 N。
函数 squareNums(int n) 取 n 并返回小于 n 的完全平方数或非平方数的个数。
将初始变量 count 设置为 0。
使用 for 循环从 i=1 遍历到 i<=n
如果 floor(sqrt(i))==ceil(sqrt(i)),则该数字为完全平方数,因此递增 count。
在所有循环结束时,count 将包含完全平方数的总数。
N-squares 将是非平方数。
示例
#include <bits/stdc++.h> #include <math.h> using namespace std; int squareNums(int n){ int count = 0; for (int i = 1; i <= n; i++){ if(floor(sqrt(i))==ceil(sqrt(i))) { count++; } } return count; } int main(){ int N = 40; int squares=squareNums(N); cout <<endl<<"Count of squares numbers: "<<squares; cout <<endl<<"Count of non-squares numbers: "<<N-squares; return 0; }
输出
如果我们运行以上代码,它将生成以下输出:
Count of squares numbers: 6 Count of non-squares numbers: 34
有效方法
下面程序中使用的方法如下
我们取整数 N。
取变量 squares = floor(sqrt(N))。
变量 squares 将包含小于 N 的完全平方数的个数。
N-squares 将包含小于 N 的非平方数的个数。
示例
#include <bits/stdc++.h> #include <math.h> using namespace std; int main(){ int N = 40; int squares=floor(sqrt(N)); cout <<endl<<"Count of squares numbers: "<<squares; cout <<endl<<"Count of non-squares numbers: "<<N-squares; return 0; }
输出
如果我们运行以上代码,它将生成以下输出:
Count of squares numbers: 6 Count of non-squares numbers: 34
广告