Hundert Quadratzahlen (Schleifen)
Schreiben Sie ein Programm (mit einer while()-Schleife), das die ersten hundert Quadratzahlen ausgibt.
Zusatzaufgabe: Erstellen Sie die Schleife auch so, dass keine Multiplikation vorkommt. Verwenden Sie ausschließlich die viel schnellere Addition. Tipp: Betrachten Sie die Differenzen je zweier aufeinanderfolgender Quadratzahlen oder schauen Sie sich die Summe der ungeraden Zahlen von 1 bis n an.
1 Kommentare
9 Lösung(en)
i = 1
while i <= 100:
print i*i
i = i +1
# phi@gress.ly
# hundert Quadratzahlen ohne Multiplikation
zahl = 1
differenz = 3
quadratzahl = 1
while zahl <= 100:
print quadratzahl
quadratzahl = quadratzahl + differenz
differenz = differenz + 2
zahl = zahl + 1
/**
* Programmieraufgaben.CH
*
* date : 2011-10-15
* author: philipp gressly freimann (Santis Training AG)
* PL/1: www.iron-spring.com
*/
Hundert:
procedure options(main);
declare
zaehler fixed(7) init (1), /* 1 .. 100 */
quadrat fixed(15) init (1), /* Die Quadratzahlen */
diff fixed(15) init (3); /* Differenzen der Quadratzahlen */
/* Schleife */
do while(zaehler <= 100);
put skip list(zaehler, ' im Quadrat: ', quadrat);
quadrat = quadrat + diff;
diff = diff + 2;
zaehler = zaehler + 1;
end;
end Hundert;
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
/**
* Author: ph. gressly freimann, Version 1.0 - 2. 4. 2012
*/
function quadratzahlen()
for(i = 1; i <= 100; i++) {
ausgabeQuadratzahl(i * i);
}
}
function ausgabeQuadratzahl(quadrat) {
var bodys = document.getElementsByTagName("body");
var body = bodys[0];
var neuerPara = macheNeuenParagraphen("" + quadrat);
body.appendChild(neuerPara);
}
function macheNeuenParagraphen(txt) {
var par = document.createElement("p");
par.innerHTML = txt;
return par;
}
/////////// html zu obigem "quadratzahlen.js" //////////////////
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Aufgabe 4.2 Quadratzahlen</title>
<meta name="author" content="ph. gressly freimann" />
<meta name="version" content="2. 4. 2012 V. 1.0" />
<script type="text/javascript" src="quadratzahlen.js"></script>
</head>
<body onload="quadratzahlen();">
<h1>Quadratzahlen</h1>
</body>
</html>
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
package ch.programmieraufgaben.iteration;
/**
* Aufgabe 4.2 "Programmieren Lernen"
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class HundertQuadratzahlen {
public static void main(String[] args) {
new HundertQuadratzahlen().top();
}
void top() {
int i = 1;
int q = 1;
// Lösung zur Zusatzaufgabe:
// Trick:
// Die Differenzen der Quadratzahlen nehmen immer um 2 zu.
int diff = 3;
while(i <= 100) {
System.out.println("Zahl: " + i + " Quadrat: " + q);
q = q + diff;
diff = diff + 2;
i = i + 1;
}
}
} // end of class HundertQuadratzahlen
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
{$R+}
{$B+}
program Quadratzahlen (input, output);
{ Berechnet die Quadtratzahlen von 1 bis 100 }
var
Zahl : integer;
Quadrat : integer;
begin
Zahl := 1;
while (Zahl <= 100) do
begin
Quadrat := Zahl * Zahl;
writeln(Quadrat);
Zahl := Zahl + 1
end
end.
Lösung von: Katja Rummler ()
static private List<int> Quadratzahlen = new List<int>();
static void Main(string[] args)
{
int quadrat = 0;
int x = 1;
while (Quadratzahlen.Count <= 99)
{
quadrat = quadrat + x;
Quadratzahlen.Add(quadrat);
x += 2;
}
for (int i = 0; i <= Quadratzahlen.Count-1; i++)
{
Console.WriteLine(Quadratzahlen[i]);
}
Console.ReadLine();
}
}
Lösung von: Michael Senzenberger (Lehrausbildung zum IT-Informatiker)
function getSquares1(limit) {
limit = limit || 100;
let out = [], i = 1;
while (out.length <= limit) {
out.push(i ** 2);
i++;
}
return out;
}
// ausgabe
let squares = getSquares1();
console.log(`Die ersten hundert Quadratzahlen: ${squares.join(', ')}`);
// stellt die einzelnen differenzen der quadratzahlen dar:
let sums = [];
for (let i = 0; i < squares.length-1; i++)
sums.push(squares[i+1] - squares[i]);
console.log(`Differenzen der Quadratzahlen: ${sums.join(', ')}`);
// darum:
function getSquares2(limit) {
limit = limit || 100;
let out = [],
i = 1, j = 2;
while (out.length <= limit) {
out.push(i);
i += j;
i++; j += 2;
}
return out;
}
// ausgabe
console.log(`
Die ersten hundert Quadratzahlen (mit Summen berechnet): ${getSquares2().join(', ')}`);
// geschwindigkeitsvergleich!
let start = new Date();
getSquares1(1e6);
let stop = new Date();
console.log(`**-Operator: ${stop - start} ms`);
start = new Date();
getSquares2(1e6);
stop = new Date();
console.log(`+-Operator: ${stop - start} ms`); // lissalanda@gmx.at
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// Um die Ergebnisse der Zeitmessung nicht zu verfälschen,
// werden durch die Funktionen keine Werte zurückgegeben.
#include <iostream>
#include <chrono>
#include <cmath>
// Zeiger-Funktion zur Übergabe an die Zeitmessfunktion
typedef void(*ptr_func)(size_t);
// 1. Werte multiplizieren
static constexpr auto get_squares_mult(size_t max) {
size_t r{ 0 };
for (size_t i{ 1 }; i <= max; ++i)
r = i * i;
}
// 2. Werte summieren
static constexpr auto get_squares_sum(size_t max) {
size_t val{ 1 };
size_t dif{ 3 };
while (max--) {
val += dif;
dif += 2;
}
}
// 3. Werte durch die interne Funktion 'pow' potenzieren
static constexpr auto get_squares_pow(size_t max) {
double r{ 0 };
for (size_t i{ 1 }; i <= max; ++i)
r = std::pow(i, 2);
}
// Zeitmessung initialisieren; Rückgabe der Zeit in Millisekunden
using hrc = std::chrono::high_resolution_clock;
using dur_t = std::chrono::duration<double, std::milli>;
// Funktion zur Zeitmessung
static auto get_duration(const ptr_func& p) {
const auto t_begin{ hrc::now() };
p(100'000'000u); // Durchläufe
const auto t_end{ hrc::now() };
const dur_t t_result{ t_end - t_begin };
return t_result.count();
}
int main() {
auto res_mult{ get_duration((ptr_func)get_squares_mult)};
std::cout << "mult: " << res_mult << " ms\n";
auto res_sum{ get_duration((ptr_func)get_squares_sum) };
std::cout << "sum: " << res_sum << " ms\n";
auto res_pow{ get_duration((ptr_func)get_squares_pow) };
std::cout << "pow: " << res_pow << " ms\n";
/*
Vergleich von 100.000.000 Durchläufen bei unterschiedlichen Compilern:
MVSC:
mult: 191.712 ms
sum : 167.688 ms
pow : 3846.15 ms
GDB:
mult: 207.649 ms
sum : 259.417 ms
pow : 2196.54 ms
GCC:
mult: 151.243 ms
sum : 107.265 ms
pow : 1728.25 ms
*/
}
Lösung von: Jens Kelm (@JKooP)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | k.A. |
Webcode: | rnuy-razx |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |
Kommentare (1)
Dese seite hatt mir sehr gefffallen. Hab trotzdm zwai Setrne gegeben. haha Xd!! trolololololl
Ich üübe jetz weiter und froie mich auff die nägsten Aufgabeln
Tschüss.