simpsonsfan
Captain
- Registriert
- Feb. 2008
- Beiträge
- 3.527
Ja schon. Auf jeden Fall lässt es sich auch elegant mit For-Schleifen lösen. Und dann noch eins, Alternative zu zahl = zahl - 1 ist zahl -= 1 - ist kürzer.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
int main()
{
int test;
int zahl1, zahl2;
int palindrome[999*999];
int x, max;
x = 0;
max = 0;
zahl1 = zahl2 = 999;
for(zahl1 = 999; zahl1 <=100; zahl1--)
{
if(funktion(zahl1 * zahl2 == 0))
{
palindrome[x] = zahl1 * zahl2;
x++;
}
for(zahl2 =999; zahl2 <=100; zahl2--)
{
if(funktion(zahl1 * zahl2 == 0))
{
palindrome[x] = zahl1 * zahl2;
x++;
}
}
}
for(int i = 1; i >= x; i++)
{
if(palindrome[i] > max)
{
max = palindrome[i];
}
}
printf("Das groesste Palindrom ist %i", max);
scanf("%i",&test);
return 0;
}
Unbehandelte Ausnahme bei 0x776915de in euler.exe: 0xC00000FD: Stack overflow.
if(funktion(zahl1 * zahl2 == 0))
if(funktion(zahl1 * zahl2) == 0)
merkst du, dass du längst nicht bis 100 runter musst. Ich sage dir jetzt aber auch einfach mal, ohne was vom Code zu verraten, dass du hier tatsächlich die größte Zahl als erste erhälst, beim Runterzählen.3*9 < 4*8 < 5*7 < 6*6 obwohl 3+9 = 4+8 = 5+7 = 6+6.
#include "stdafx.h"
int istPalindrom(int zahl)
{
unsigned char stelle[6];
stelle[5] = zahl % 1000000 / 100000;
stelle[4] = zahl % 100000 / 10000;
stelle[3] = zahl % 10000 / 1000;
stelle[2] = zahl % 1000 / 100;
stelle[1] = zahl % 100 / 10;
stelle[0] = zahl % 10;
if(stelle[5] == stelle[0] && stelle[4] == stelle[1] && stelle[3] == stelle[2])
return 1;
else
return 0;
}
int main()
{
int test;
int zahl1, zahl2;
int palindrome[10000];
int palindromanzahl, max;
palindromanzahl = 0;
max = 0;
for(zahl1 = 999; zahl1 >=100; zahl1--)
{
for(zahl2 =999; zahl2 >=100; zahl2--)
{
if(istPalindrom(zahl1 * zahl2) == 1)
{
palindrome[palindromanzahl] = zahl1 * zahl2;
palindromanzahl++;
}
}
}
for(int i = 1; i < palindromanzahl; i++)
{
if(palindrome[i] > max)
{
max = palindrome[i];
}
}
printf("Das groesste Palindrom ist %i", max);
scanf("%i",&test);
return 0;
}
for(...){
for(...){
if(Palindrom){
printf("Palindrom ist ",x);
return 0;
}
}
}
bool multiple20(int zahl)
{
int zaehler;
zaehler = 0;
for(int x = 1; x <= 20; x++)
{
if(zahl%x==0)
++zaehler;
}
if(zaehler == 20)
return true;
else
return false;
}
int main()
{
int vielfaches, test;
vielfaches = 1;
while(multiple20(vielfaches) == false)
{
++vielfaches;
}
printf("Die gesuchte Zahl lautet %i", vielfaches);
scanf("%i", &test);
}
Windows verteilt die Last meist auf verschiedene Kerne. Du kannst deinem Programm im Taskmanager auch einen Kern zuweisen, der dann auf 100% arbeitet aber das dürfte performancemäßig nichts bringen, da auch andere Prozesse diesen Kern benutzten werden.datalukas schrieb:Aber wenn ich mir die Kern-Leistung anschaue, ist Kern 3 auch nur teilweise voll ausgelastet. Muss das so sein oder kann man die Leistung effizienter nutzen?
#include "stdafx.h"
bool multiple20(int zahl)
{
int x;
x = 20;
while((zahl%x == 0) && (x >= 10))
--x;
if(x == 9)
return true;
else
return false;
}
int main()
{
int vielfaches, test;
vielfaches = 1;
while(multiple20(vielfaches) == false)
{
++vielfaches;
}
printf("Die gesuchte Zahl lautet %i", vielfaches);
scanf("%i", &test);
}
Klär mich auf. ;DUnd: Es gibt ein Trick, mit dem kannst du das ganze ca. 20x schneller machen.
for(int x=20;x>=11;--x)
if(zahl%x!=0)
return false;
return true;