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