sage: for d in [2..1000]: ... if is_fundamental_discriminant(d): ... h = QuadraticField(d, 'a').class_number() ... if h == 1: ... print d, 5 8 12 13 17 21 24 28 29 33 37 41 44 53 56 57 61 69 73 76 77 88 89 92 93 97 101 109 113 124 129 133 137 141 149 152 157 161 172 173 177 181 184 188 193 197 201 209 213 217 233 236 237 241 248 249 253 268 269 277 281 284 293 301 309 313 317 329 332 337 341 344 349 353 373 376 381 389 393 397 409 412 413 417 421 428 433 437 449 453 457 461 472 489 497 501 508 509 517 521 524 536 537 541 553 556 557 569 573 581 589 593 597 601 604 613 617 632 633 641 649 652 653 661 664 668 669 673 677 681 701 709 713 716 717 721 737 749 753 757 764 769 773 781 789 796 797 809 813 821 824 829 844 849 853 856 857 869 877 881 889 893 908 913 917 921 929 933 937 941 953 956 973 977 989 997In contrast, if we look at class numbers of quadratic imaginary fields, only a few at the beginning have class number .

sage: for d in [-1,-2..-1000]: ... if is_fundamental_discriminant(d): ... h = QuadraticField(d, 'a').class_number() ... if h == 1: ... print d, -3 -4 -7 -8 -11 -19 -43 -67 -163It is a theorem that was proved independently and in different ways by Heegner, Stark, and Baker that the above list of fields is the complete list with class number . More generally, it is possible, using deep work of Gross, Zagier, and Goldfeld involving zeta functions and elliptic curves, to enumerate all quadratic number fields with a given class number (this may however not be practical - see Mark Watkins Ph.D. thesis).

William Stein 2012-09-24