6-stellige Zahl gesucht?
Gesucht ist eine 6-stellige Zahl
Quersumme soll 43 sein
Es ist eine Quadratzahl und sie ist kleiner als 500.000
Wer kann helfen?
7 Antworten
sei abcdef die zahl.
dann gilt:
a+b+c+d+e+f=43
abcdef<500000
da abcdef eine quadratzahl ist, gilt dann weiter
abcdef=q^2, mit q<708
da abcdef 6stellig ist, ist weiter 316<q<708.
ansonsten können wir, da a+b+c+d+e+f=43,
mögliche kombinationen durchgucken:
eine Möglichkeit ist 9+9+9+9+6+1
kann aber nicht sein, da dann 999961>500000
wenn wir in der summe eine summe erhöhen, müssen wir eine andere verringern.
dadurch kommen wir bspw. auf folgende maximal denkbare zahl:
4+9+9+9+9+3
Ist sie eine quadratzahl?
nö :-)
also überlegen wir was anderes.
wie wir oben gesagt haben, muss abcdef=q^2 sein und 316<q<708.
also muss q insbesondere eine 3stellige zahl sein: q=ghi=100g+10h+1i
Deren quadrat ist (100g+10h+i)*(100g+10h+i)
=10000g^2+1000gh+100gi
+ 1000gh+100h^2+10hi
+ 100gi+10hi + i^2
=10000*(g^2)+1000*(2gh)+100*(2gi+h^2)+10*(2hi)+i^2
das muss gleich 100000a+10000b+1000c+100d+10e+f sein.
wir wissen, weil 316<ghi<708, dass 3<=g<=7.
Viel mehr fällt mir gerade auch nicht ein :-D
Progrämmchen:
#include <stdio.h>
#include <math.h>
int quer(int x) {
int s;
for (s=0; x!=0; x/=10)
s += x%10;
return s;
}
int main() {
int M = ceil(sqrt(500e3));
for (int i=1; i<=M; i++)
if (quer(i*i)==43) printf("%d\n",i);
return 0;
}
yay
man könnte noch argumentieren, dass ((i*i)%9)==7 sein muss... weil 4+3=7 ist... also die einstellige Quersumme... das wär noch etwas schneller... kicher
das ist jetzt meine total durchgestylte Version: LOL
#include <stdio.h>
#include <math.h>
int quer(int x) {
if ((x%9)!=(43%9)) return -1;
int s;
for (s=0; x!=0; x/=10)
s += x%10;
return s;
}
int main() {
int m = floor(sqrt(100e3));
int M = ceil(sqrt(500e3));
for (int i=m, q; i<=M; i++)
if (quer(q=i*i)==43) printf("%d²=%d\n",i,q);
return 0;
}
- wie bist du auf 1 und 708 gekommen? im Kopf? LOL ich benutz da lieber sqrt()... das ist näher an der Aufgabe...
- bei deiner neuen Lösung ist das „6 stellig“ verloren gegangen... aber es kommt trotzdem das Richtige raus...
- „sieht effizienter“ aus... hahah... indem du n integer in nen string umwandelst... LOL
Naja die erste Zahl die quadriert größer als 500.000 ist wäre 708.
Und wenn ich nur die Quersummen für die Quadratzahlen untersuche spart das Iterationen und Schreibarbeit
Durch die 317 und 708 grenzt man das auf sechstellig ein.
Weil die Zahlen quadriert alle im angegebenen Zahlenbereich liegen
Ich persönlich würde einfach meine Programmierkenntnisse einsetzen und schnell ein kleines Programm schreiben, was mir die Zahl ausrechnet.
Da selber zu Probieren etc. ist mir zu aufwendig.
Gibt es sonst irgendwelche Vorgaben?
Ich melde mich gleich nochmal mit dem Ergebnis ^^
Ich hab jetzt noch nicht gezielt nach einer Lösung gesucht, aber du könntest ja einfach mal ein wenig ausprobieren? Was schonmal klar ist: die meisten Stellen der Zahl müssen relativ hoch sein (also z.B. 7 oder 8 oder 9), damit die Quersumme 43 ergeben kann.
Also mein Computer berechnet folgende 6-stellige Zahlen als Quadratzahlen:
101124
101761
102400
103041
103684
104329
104976
105625
106276
106929
107584
108241
108900
109561
110224
110889
111556
112225
112896
113569
114244
114921
115600
116281
116964
117649
118336
119025
119716
120409
121104
121801
122500
123201
123904
124609
125316
126025
126736
127449
128164
128881
129600
130321
131044
131769
132496
133225
133956
134689
135424
136161
136900
137641
138384
139129
139876
140625
141376
142129
142884
143641
144400
145161
145924
146689
147456
148225
148996
149769
150544
151321
152100
152881
153664
154449
155236
156025
156816
157609
158404
159201
160000
160801
161604
162409
163216
164025
164836
165649
166464
167281
168100
168921
169744
170569
171396
172225
173056
173889
174724
175561
176400
177241
178084
178929
179776
180625
181476
182329
183184
184041
184900
185761
186624
187489
188356
189225
190096
190969
191844
192721
193600
194481
195364
196249
197136
198025
198916
199809
200704
201601
202500
203401
204304
205209
206116
207025
207936
208849
209764
210681
211600
212521
213444
214369
215296
216225
217156
218089
219024
219961
220900
221841
222784
223729
224676
225625
226576
227529
228484
229441
230400
231361
232324
233289
234256
235225
236196
237169
238144
239121
240100
241081
242064
243049
244036
245025
246016
247009
248004
249001
250000
251001
252004
253009
254016
255025
256036
257049
258064
259081
260100
261121
262144
263169
264196
265225
266256
267289
268324
269361
270400
271441
272484
273529
274576
275625
276676
277729
278784
279841
280900
281961
283024
284089
285156
286225
287296
288369
289444
290521
291600
292681
293764
294849
295936
297025
298116
299209
300304
301401
302500
303601
304704
305809
306916
308025
309136
310249
311364
312481
313600
314721
315844
316969
318096
319225
320356
321489
322624
323761
324900
326041
327184
328329
329476
330625
331776
332929
334084
335241
336400
337561
338724
339889
341056
342225
343396
344569
345744
346921
348100
349281
350464
351649
352836
354025
355216
356409
357604
358801
360000
361201
362404
363609
364816
366025
367236
368449
369664
370881
372100
373321
374544
375769
376996
378225
379456
380689
381924
383161
384400
385641
386884
388129
389376
390625
391876
393129
394384
395641
396900
398161
399424
400689
401956
403225
404496
405769
407044
408321
409600
410881
412164
413449
414736
416025
417316
418609
419904
421201
422500
423801
425104
426409
427716
429025
430336
431649
432964
434281
435600
436921
438244
439569
440896
442225
443556
444889
446224
447561
448900
450241
451584
452929
454276
455625
456976
458329
459684
461041
462400
463761
465124
466489
467856
469225
470596
471969
473344
474721
476100
477481
478864
480249
481636
483025
484416
485809
487204
488601
490000
491401
492804
494209
495616
497025
498436
499849
Such dir eine aus ;)
Ich habs in Python gemacht, weil ich gerade keinen C Compiler hatte
Ausgabe: 499849