配列内の完全平方数の要素を合計するCプログラム
問題
配列に含まれる完全平方数(平方数)の要素だけを取り出し、その合計を求めるプログラムを作成します。
入力として配列の要素数と各要素が与えられ、配列内に存在するすべての完全平方数の合計を出力します。
解き方
例を見てみましょう。
入力 = 1, 2, 3, 4, 5, 9, 10, 11, 16 この中の完全平方数は 1, 4, 9, 16。 合計 = 1 + 4 + 9 + 16 = 30 出力:30
アルゴリズム
配列内の完全平方数の要素を合計するためのアルゴリズムは以下の通りです。
ステップ1 − 実行時に配列の要素数を読み込む。
ステップ2 − 各要素を入力する。
ステップ3 − 合計値を表す変数sumを宣言し、0で初期化する。
ステップ4 − 配列の各要素が完全平方数かどうかを判定する。
ステップ5 − 完全平方数であれば、sum = sum + number を計算する。
ステップ6 − 最終的なsumを返す。
完全平方数の判定方法
ある整数が完全平方数かどうかは、その数の平方根を求め、小数点以下を切り捨てた値と元の平方根が一致するかどうかで判定できます。一致すればその数は完全平方数です。
サンプルコード
以下は、配列内の完全平方数の要素の合計を求めるCプログラムです。
#include<stdio.h>
#include<math.h>
int isPerfectSquare(int number){
int iVar;
float fVar;
fVar=sqrt((double)number);
iVar=fVar;
if(iVar==fVar)
return number;
else
return 0;
}
int main(){
int n;
printf("enter no: of elements:");
scanf("%d",&n);
int arr[n];
int i;
printf("enter the elements in an array:\n");
for(i = 0; i < n; i++){
scanf("%d",&arr[i]);
}
int sum = 0;
for(i = 0; i < n; i++){
sum = sum + isPerfectSquare(arr[i]);
}
printf("sum=%d",sum);
return 0;
}実行結果
上記のプログラムを実行すると、次のような出力が得られます。
Run 1: enter no: of elements:5 enter the elements in an array: 1 3 5 9 10 sum=10 Run 2: enter no: of elements:5 enter the elements in an array: 1 4 9 16 25 sum=55
まとめ
このプログラムでは、sqrt関数を使って各要素の平方根を求め、それが整数と一致するかどうかで完全平方数を判定しています。Run 1では「1」と「9」が完全平方数のため合計は10、Run 2では入力した5つすべてが完全平方数のため合計は55となっています。このように、平方根の性質を利用することで、簡単に完全平方数の判定と合計計算が実装できます。
-
【Python入門】配列(リスト)内の全要素の出現頻度をカウントする2つの方法
このチュートリアルでは、配列(リスト)内のすべての要素が出現する回数(頻度)を求めるプログラムの作成方法を解説します。Pythonでは主に2つのアプローチがあり、それぞれ実装方法とコード例を見ていきましょう。 方法1:dict(辞書)を使う まずは、標準的なdict(辞書)を使った基本的な方法です。処理の流れは以下の通りです。 配列を初期化します。 空の辞書を初期化します。 リストを反復処理します。 要素が辞書に存在しない場合は、値を 1 に設定します。 要素がすでに辞書に存在する場合は、値を +1 してカウントを増やします。 辞書を反復処理しながら、要素とその出現回数を出力します。
-
Pythonで整数配列の重複を除去し、個別の要素だけを出力する方法
整数型の配列が与えられ、その中には重複した要素が含まれている場合があります。この記事では、重複を取り除いて個別(ユニーク)な値だけを出力するPythonプログラムを解説します。 実行例 入力:A = [1, 2, 3, 4, 2, 3, 5, 6] 出力:[1, 2, 3, 4, 5, 6] アルゴリズム このプログラムは次の手順で動作します。 配列の要素を入力として受け取ります。 各要素を先頭から順番に1つずつ取り出します。 取り出した要素が、それ以前にすでに出力されたものかどうかを確認します。 初期値0のフラグ変数を用意し、すでに表示済みなら1、未表示なら0のままにします。 フラ