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.
朴素方法
下面程序中使用的方法如下
我们取整数 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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP