fork download
  1. #include <queue>
  2. #include <iostream>
  3. #include <utility>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. unsigned max_num_primes;
  11. cout << "Wie viele Primzahlen? ";
  12. cin >> max_num_primes;
  13.  
  14. // Die 2 sparen wir uns mal bei der Rechnung:
  15. if (max_num_primes > 0)
  16. {
  17. cout << "2\t";
  18. unsigned num_primes_printed = 1;
  19. unsigned current_number = 3;
  20.  
  21. std::priority_queue<pair<unsigned int, unsigned int>,
  22. vector< pair<unsigned int, unsigned int> >,
  23. greater< pair<unsigned int, unsigned int> >
  24. >
  25. queue;
  26.  
  27. while (num_primes_printed < max_num_primes)
  28. {
  29. if (queue.empty() || queue.top().first != current_number)
  30. {
  31. cout << current_number << '\t';
  32. ++num_primes_printed;
  33. queue.push(make_pair(current_number*current_number, current_number*2));
  34. }
  35. else
  36. {
  37. for(pair<unsigned int, unsigned int> top = queue.top();
  38. top.first == current_number;
  39. top=queue.top())
  40. {
  41. queue.pop();
  42. queue.push(make_pair(top.first + top.second, top.second));
  43. }
  44. }
  45. current_number += 2;
  46. }
  47. cout << '\n';
  48. }
  49. }
Success #stdin #stdout 0s 3436KB
stdin
1000
stdout
Wie viele Primzahlen? 2	3	5	7	11	13	17	19	23	29	31	37	41	43	47	53	59	61	67	71	73	79	83	89	97	101	103	107	109	113	127	131	137	139	149	151	157	163	167	173	179	181	191	193	197	199	211	223	227	229	233	239	241	251	257	263	269	271	277	281	283	293	307	311	313	317	331	337	347	349	353	359	367	373	379	383	389	397	401	409	419	421	431	433	439	443	449	457	461	463	467	479	487	491	499	503	509	521	523	541	547	557	563	569	571	577	587	593	599	601	607	613	617	619	631	641	643	647	653	659	661	673	677	683	691	701	709	719	727	733	739	743	751	757	761	769	773	787	797	809	811	821	823	827	829	839	853	857	859	863	877	881	883	887	907	911	919	929	937	941	947	953	967	971	977	983	991	997	1009	1013	1019	1021	1031	1033	1039	1049	1051	1061	1063	1069	1087	1091	1093	1097	1103	1109	1117	1123	1129	1151	1153	1163	1171	1181	1187	1193	1201	1213	1217	1223	1229	1231	1237	1249	1259	1277	1279	1283	1289	1291	1297	1301	1303	1307	1319	1321	1327	1361	1367	1373	1381	1399	1409	1423	1427	1429	1433	1439	1447	1451	1453	1459	1471	1481	1483	1487	1489	1493	1499	1511	1523	1531	1543	1549	1553	1559	1567	1571	1579	1583	1597	1601	1607	1609	1613	1619	1621	1627	1637	1657	1663	1667	1669	1693	1697	1699	1709	1721	1723	1733	1741	1747	1753	1759	1777	1783	1787	1789	1801	1811	1823	1831	1847	1861	1867	1871	1873	1877	1879	1889	1901	1907	1913	1931	1933	1949	1951	1973	1979	1987	1993	1997	1999	2003	2011	2017	2027	2029	2039	2053	2063	2069	2081	2083	2087	2089	2099	2111	2113	2129	2131	2137	2141	2143	2153	2161	2179	2203	2207	2213	2221	2237	2239	2243	2251	2267	2269	2273	2281	2287	2293	2297	2309	2311	2333	2339	2341	2347	2351	2357	2371	2377	2381	2383	2389	2393	2399	2411	2417	2423	2437	2441	2447	2459	2467	2473	2477	2503	2521	2531	2539	2543	2549	2551	2557	2579	2591	2593	2609	2617	2621	2633	2647	2657	2659	2663	2671	2677	2683	2687	2689	2693	2699	2707	2711	2713	2719	2729	2731	2741	2749	2753	2767	2777	2789	2791	2797	2801	2803	2819	2833	2837	2843	2851	2857	2861	2879	2887	2897	2903	2909	2917	2927	2939	2953	2957	2963	2969	2971	2999	3001	3011	3019	3023	3037	3041	3049	3061	3067	3079	3083	3089	3109	3119	3121	3137	3163	3167	3169	3181	3187	3191	3203	3209	3217	3221	3229	3251	3253	3257	3259	3271	3299	3301	3307	3313	3319	3323	3329	3331	3343	3347	3359	3361	3371	3373	3389	3391	3407	3413	3433	3449	3457	3461	3463	3467	3469	3491	3499	3511	3517	3527	3529	3533	3539	3541	3547	3557	3559	3571	3581	3583	3593	3607	3613	3617	3623	3631	3637	3643	3659	3671	3673	3677	3691	3697	3701	3709	3719	3727	3733	3739	3761	3767	3769	3779	3793	3797	3803	3821	3823	3833	3847	3851	3853	3863	3877	3881	3889	3907	3911	3917	3919	3923	3929	3931	3943	3947	3967	3989	4001	4003	4007	4013	4019	4021	4027	4049	4051	4057	4073	4079	4091	4093	4099	4111	4127	4129	4133	4139	4153	4157	4159	4177	4201	4211	4217	4219	4229	4231	4241	4243	4253	4259	4261	4271	4273	4283	4289	4297	4327	4337	4339	4349	4357	4363	4373	4391	4397	4409	4421	4423	4441	4447	4451	4457	4463	4481	4483	4493	4507	4513	4517	4519	4523	4547	4549	4561	4567	4583	4591	4597	4603	4621	4637	4639	4643	4649	4651	4657	4663	4673	4679	4691	4703	4721	4723	4729	4733	4751	4759	4783	4787	4789	4793	4799	4801	4813	4817	4831	4861	4871	4877	4889	4903	4909	4919	4931	4933	4937	4943	4951	4957	4967	4969	4973	4987	4993	4999	5003	5009	5011	5021	5023	5039	5051	5059	5077	5081	5087	5099	5101	5107	5113	5119	5147	5153	5167	5171	5179	5189	5197	5209	5227	5231	5233	5237	5261	5273	5279	5281	5297	5303	5309	5323	5333	5347	5351	5381	5387	5393	5399	5407	5413	5417	5419	5431	5437	5441	5443	5449	5471	5477	5479	5483	5501	5503	5507	5519	5521	5527	5531	5557	5563	5569	5573	5581	5591	5623	5639	5641	5647	5651	5653	5657	5659	5669	5683	5689	5693	5701	5711	5717	5737	5741	5743	5749	5779	5783	5791	5801	5807	5813	5821	5827	5839	5843	5849	5851	5857	5861	5867	5869	5879	5881	5897	5903	5923	5927	5939	5953	5981	5987	6007	6011	6029	6037	6043	6047	6053	6067	6073	6079	6089	6091	6101	6113	6121	6131	6133	6143	6151	6163	6173	6197	6199	6203	6211	6217	6221	6229	6247	6257	6263	6269	6271	6277	6287	6299	6301	6311	6317	6323	6329	6337	6343	6353	6359	6361	6367	6373	6379	6389	6397	6421	6427	6449	6451	6469	6473	6481	6491	6521	6529	6547	6551	6553	6563	6569	6571	6577	6581	6599	6607	6619	6637	6653	6659	6661	6673	6679	6689	6691	6701	6703	6709	6719	6733	6737	6761	6763	6779	6781	6791	6793	6803	6823	6827	6829	6833	6841	6857	6863	6869	6871	6883	6899	6907	6911	6917	6947	6949	6959	6961	6967	6971	6977	6983	6991	6997	7001	7013	7019	7027	7039	7043	7057	7069	7079	7103	7109	7121	7127	7129	7151	7159	7177	7187	7193	7207	7211	7213	7219	7229	7237	7243	7247	7253	7283	7297	7307	7309	7321	7331	7333	7349	7351	7369	7393	7411	7417	7433	7451	7457	7459	7477	7481	7487	7489	7499	7507	7517	7523	7529	7537	7541	7547	7549	7559	7561	7573	7577	7583	7589	7591	7603	7607	7621	7639	7643	7649	7669	7673	7681	7687	7691	7699	7703	7717	7723	7727	7741	7753	7757	7759	7789	7793	7817	7823	7829	7841	7853	7867	7873	7877	7879	7883	7901	7907	7919