🎉 Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io 🎉
Avatar of dilmnqvovpnmlib

dilmnqvovpnmlib's solution

to Perfect Numbers in the C Track

Published at Apr 17 2021 · 0 comments
Instructions
Test suite
Solution

Determine if a number is perfect, abundant, or deficient based on Nicomachus' (60 - 120 CE) classification scheme for positive integers.

The Greek mathematician Nicomachus devised a classification scheme for positive integers, identifying each as belonging uniquely to the categories of perfect, abundant, or deficient based on their aliquot sum. The aliquot sum is defined as the sum of the factors of a number not including the number itself. For example, the aliquot sum of 15 is (1 + 3 + 5) = 9

  • Perfect: aliquot sum = number
    • 6 is a perfect number because (1 + 2 + 3) = 6
    • 28 is a perfect number because (1 + 2 + 4 + 7 + 14) = 28
  • Abundant: aliquot sum > number
    • 12 is an abundant number because (1 + 2 + 3 + 4 + 6) = 16
    • 24 is an abundant number because (1 + 2 + 3 + 4 + 6 + 8 + 12) = 36
  • Deficient: aliquot sum < number
    • 8 is a deficient number because (1 + 2 + 4) = 7
    • Prime numbers are deficient

Implement a way to determine whether a given number is perfect. Depending on your language track, you may also need to implement a way to determine whether a given number is abundant or deficient.

Getting Started

Make sure you have read the "Guides" section of the C track on the Exercism site. This covers the basic information on setting up the development environment expected by the exercises.

Passing the Tests

Get the first test compiling, linking and passing by following the three rules of test-driven development.

The included makefile can be used to create and run the tests using the test task.

make test

Create just the functions you need to satisfy any compiler errors and get the test to fail. Then write just enough code to get the test to pass. Once you've done that, move onto the next test.

As you progress through the tests, take the time to refactor your implementation for readability and expressiveness and then go on to the next test.

Try to use standard C99 facilities in preference to writing your own low-level algorithms or facilities by hand.

Source

Taken from Chapter 2 of Functional Thinking by Neal Ford. http://shop.oreilly.com/product/0636920029687.do

Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

test_perfect_numbers.c

#include "vendor/unity.h"
#include "../src/perfect_numbers.h"

void setUp(void)
{
}

void tearDown(void)
{
}

static void test_smallest_perfect_number_is_classified_correctly(void)
{
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(6));
}

static void test_medium_perfect_number_is_classified_correctly(void)
{
   TEST_IGNORE();               // delete this line to run test
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(28));
}

static void test_large_perfect_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(33550336));
}

static void test_smallest_abundant_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(12));
}

static void test_medium_abundant_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(30));
}

static void test_large_abundant_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(33550335));
}

static void test_smallest_prime_deficient_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(2));
}

static void
test_smallest_non_prime_deficient_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(4));
}

static void test_medium_deficient_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(32));
}

static void test_large_deficient_number_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(33550337));
}

static void test_edge_case_is_classified_correctly(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(1));
}

static void test_zero_is_rejected(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(ERROR, classify_number(0));
}

static void test_negative_integer_is_rejected(void)
{
   TEST_IGNORE();
   TEST_ASSERT_EQUAL(ERROR, classify_number(-1));
}

int main(void)
{
   UnityBegin("test/test_perfect_numbers.c");

   RUN_TEST(test_smallest_perfect_number_is_classified_correctly);
   RUN_TEST(test_medium_perfect_number_is_classified_correctly);
   RUN_TEST(test_large_perfect_number_is_classified_correctly);
   RUN_TEST(test_smallest_abundant_number_is_classified_correctly);
   RUN_TEST(test_medium_abundant_number_is_classified_correctly);
   RUN_TEST(test_large_abundant_number_is_classified_correctly);
   RUN_TEST(test_smallest_prime_deficient_number_is_classified_correctly);
   RUN_TEST(test_smallest_non_prime_deficient_number_is_classified_correctly);
   RUN_TEST(test_medium_deficient_number_is_classified_correctly);
   RUN_TEST(test_large_deficient_number_is_classified_correctly);
   RUN_TEST(test_edge_case_is_classified_correctly);
   RUN_TEST(test_zero_is_rejected);
   RUN_TEST(test_negative_integer_is_rejected);

   return UnityEnd();
}

src/perfect_numbers.c

#include "perfect_numbers.h"

kind classify_number(int value) {
    if (value <= 0) {
        return ERROR;
    }
    int sum = 0;
    for (int i = 1; i < value; ++i) {
        if ( value % i == 0 ) {
            sum += i;
        }
    }
    if (sum == value) {
        return PERFECT_NUMBER;
    } else if (sum > value) {
        return ABUNDANT_NUMBER;
    } else if (sum < value) {
        return DEFICIENT_NUMBER;
    }
    return ERROR;
}

src/perfect_numbers.h

#ifndef PERFECT_NUMBERS_H
#define PERFECT_NUMBERS_H

typedef enum {
   PERFECT_NUMBER = 1,
   ABUNDANT_NUMBER = 2,
   DEFICIENT_NUMBER = 3,
   ERROR = -1
} kind;

kind classify_number(int value);

#endif

test/test_perfect_numbers.c

#include "vendor/unity.h"
#include "../src/perfect_numbers.h"

void setUp(void)
{
}

void tearDown(void)
{
}

static void test_smallest_perfect_number_is_classified_correctly(void)
{
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(6));
}

static void test_medium_perfect_number_is_classified_correctly(void)
{
   // TEST_IGNORE();               // delete this line to run test
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(28));
}

static void test_large_perfect_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(PERFECT_NUMBER, classify_number(33550336));
}

static void test_smallest_abundant_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(12));
}

static void test_medium_abundant_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(30));
}

static void test_large_abundant_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(ABUNDANT_NUMBER, classify_number(33550335));
}

static void test_smallest_prime_deficient_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(2));
}

static void
test_smallest_non_prime_deficient_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(4));
}

static void test_medium_deficient_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(32));
}

static void test_large_deficient_number_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(33550337));
}

static void test_edge_case_is_classified_correctly(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(DEFICIENT_NUMBER, classify_number(1));
}

static void test_zero_is_rejected(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(ERROR, classify_number(0));
}

static void test_negative_integer_is_rejected(void)
{
   // TEST_IGNORE();
   TEST_ASSERT_EQUAL(ERROR, classify_number(-1));
}

int main(void)
{
   UnityBegin("test/test_perfect_numbers.c");

   RUN_TEST(test_smallest_perfect_number_is_classified_correctly);
   RUN_TEST(test_medium_perfect_number_is_classified_correctly);
   RUN_TEST(test_large_perfect_number_is_classified_correctly);
   RUN_TEST(test_smallest_abundant_number_is_classified_correctly);
   RUN_TEST(test_medium_abundant_number_is_classified_correctly);
   RUN_TEST(test_large_abundant_number_is_classified_correctly);
   RUN_TEST(test_smallest_prime_deficient_number_is_classified_correctly);
   RUN_TEST(test_smallest_non_prime_deficient_number_is_classified_correctly);
   RUN_TEST(test_medium_deficient_number_is_classified_correctly);
   RUN_TEST(test_large_deficient_number_is_classified_correctly);
   RUN_TEST(test_edge_case_is_classified_correctly);
   RUN_TEST(test_zero_is_rejected);
   RUN_TEST(test_negative_integer_is_rejected);

   return UnityEnd();
}

tests.out

ELF>@@ø¯@8	@"!@@@øø888 D D  M M  M p¸ °M°M °M ððTTTDDPåtdÄ:Ä:Ä:ôôQåtdRåtd M M  M ``/lib64/ld-linux-x86-64.so.2GNUGNUjùñ\•?�¨¢à߯‹%4k C,‡ $– 4"libc.so.6__stack_chk_failputcharlongjmp_setjmp__cxa_finalize__libc_start_mainGLIBC_2.4GLIBC_2.2.5_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableii
Uui	_ M @¨M P P ØO àO èO ðO øO 	¸O ÀO ÈO ÐO HƒìH‹J H…ÀtÿÐHƒÄÃÿ5ÂI ÿ%ÄI @ÿ%ÂI héàÿÿÿÿ%ºI héÐÿÿÿÿ%²I héÀÿÿÿÿ%ªI hé°ÿÿÿÿ%ÂI f�1íI‰Ñ^H‰âHƒäðPTL�:.H�
Ã-H�=l,ÿvI ôDH�=™I UH�‘I H9øH‰åtH‹JI H…Àt
]ÿàf.„]Ã@f.„H�=YI H�5RI UH)þH‰åHÁþH‰ðHÁè?HÆHÑþtH‹I H…Àt]ÿàf„]Ã@f.„€=I u/Hƒ=çH UH‰åtH‹=êH è
ÿÿÿèHÿÿÿÆñH ]ÀóÃfDUH‰å]éfÿÿÿUH‰å‰}ìƒ}ì¸ÿÿÿÿëaÇEøÇEüë‹Eì™÷}ü‰ЅÀu‹EüEøƒEü‹Eü;Eì|á‹Eø;Eìu¸ë#‹Eø;Eì~¸ë‹Eø;Eì}¸ë¸ÿÿÿÿ]ÃUH‰åHƒìH‰}øH‹Eø¶<tH‹Eø¶<~H‹Eø¶¾À‰ÇèüýÿÿënH‹Eø¶<
u¿\èåýÿÿ¿rèÛýÿÿëMH‹Eø¶<
u¿\èÄýÿÿ¿nèºýÿÿë,¿\è®ýÿÿ¿xè¤ýÿÿH‹Eø¶H¾À¾H‰Çè�ÉÃUH‰åHƒì H‰}èH‹EèH‰EøHƒ}øtëH‹EøH‰Çè1ÿÿÿHƒEøH‹Eø¶„Àuä�ÉÃUH‰åHƒì H‰}è‰uäH‹EèH‰EøHƒ}ø„ÃéœH‹Eø¶<tH‹Eø¶<~H‹Eø¶¾À‰ÇèÿüÿÿënH‹Eø¶<
u¿\èèüÿÿ¿rèÞüÿÿëMH‹Eø¶<
u¿\èÇüÿÿ¿nè½üÿÿë,¿\è±üÿÿ¿xè§üÿÿH‹Eø¶H¾À¾H‰ÇèHƒEøH‹Eø¶„ÀtH‹UøH‹EèH)ÂH‰Ð9Eä‡Bÿÿÿ�ÉÃUH‰åHƒìH‰}ø‰uô‹Eôƒà…À„«�}ô‘…�¿'è1üÿÿHƒ}ø~Hƒ}ø~
H‹Eø‰Çèüÿÿë_Hƒ}ø
u¿\èüÿÿ¿rèûûÿÿëBHƒ}ø
u¿\èèûÿÿ¿nèÞûÿÿë%¿\èÒûÿÿ¿xèÈûÿÿH‹Eø¾H‰ÇèD¿'è­ûÿÿëSH‹EøH‰ÇèJëE‹Eôƒà …ÀtH‹EøH‰Çèjë-¿0è{ûÿÿ¿xèqûÿÿ‹EôƒàÀ¾ÐH‹Eø‰ÖH‰Çèå�ÉÃUH‰åHƒì H‰}èH‹EèH‰EøHƒ}èy¿-è0ûÿÿH÷]øH‹EøH‰Çè�ÉÃUH‰åHƒì H‰}èHÇEøëH‹UøH‰ÐHÁàHÐHÀH‰EøH‹EèºH÷uøHƒø	wØH‹EèºH÷uøH‰ÁHºÍÌÌÌÌÌÌÌH‰ÈH÷âHÁêH‰ÐHÁàHÐHÀH)ÁH‰ʉЃÀ0¾À‰Çè™úÿÿH‹EøHºÍÌÌÌÌÌÌÌH÷âH‰ÐHÁèH‰EøHƒ}øu—�ÉÃUH‰åHƒì H‰}è‰ðˆEä¶EäˆEû¶Eû<vQÆEûëK¶EûƒèˆEû¾EûÁàH‹Uè‰ÁHÓêH‰Ѓà‰Eüƒ}ü	‹EüƒÀ0¾À‰Çèúÿÿë‹EüƒÀ7¾À‰Çèúÿÿ€}û¯�ÉÃUH‰åHƒì H‰}èH‰u฀H‰EøÇEôëDH‹EøH#EèH…Àt%H‹EøH#EàH…Àt¿1è³ùÿÿë¿0è§ùÿÿë
¿Xè›ùÿÿHÑmøƒEôƒ}ô~¶�ÉÃUH‰åHƒì`óE¬dH‹%(H‰Eø1ÀóE¬óE¼fïÀ.E¼v¿-èPùÿÿóM¼ó+WÁóE¼fïÀ.E¼zfïÀ.E¼uH�=«*è’ûÿÿékóE¼.E¼{H�=‘*èvûÿÿéOóM¼óÍ*TÁ.Ó*–Àƒð„ÀtH�=c*èDûÿÿéÇEÀÇEÈHÇEàHÇEèó–*.E¼†‘ó„*óEÔëóM¼ót*óYÁóE¼ƒmÈ
‹)*ó*Àó
U*ó^Á.E¼wÊëóMÔó@*óYÁóEԃmÈóE¼(ÈóYMԋè)ó*À.ÁwÊóE¼óYEÔóE¼é‹Á)ó*ÀóM¼.Ȇ�óÛ)óEØëóE¼ó
Ë)ó^ÁóE¼ƒEÈ
‹„)ó*Àó
¬)óYÁóM¼.ÈwÆëóMØó“)óYÁóE؃EÈóE¼ó^E؋:)ó*È.ÁwÍóE¼ó^EØóE¼ëtóL)óEÜóE¼ó,À‰EÀó*EÀóM¼ó\È(ÁóE¼ë)‹UÀ‰ÐÁàÐÀ‰EÀóMÜó)óYÁóE܃mÈ‹Ä(9EÀ|ÌóE¼óYEÜóE¼óE¼óXÀó,ÀƒÀ‰ÂÁêÐÑø‰EċEăà…Àt ó*EÄó\E¼.µ(z
.¬(uƒmÄ‹EÀEċZ(9EÄ|
‹S(‰EăEȃ}È‹D(ºýÿÿÿ)‰Ð9EÈ|‹EÈ÷Øë	‹)(ƒè‰E̋EÌEÈë‹Mĺgfff‰È÷êÁú‰ÈÁø)‰ЉEăm̃}Ì~'‹Mĺgfff‰È÷êÁú‰ÈÁø)‰ÐÁàÐÀ)Á‰ʅÒt´ÇEÐëT‹Mĺgfff‰È÷êÁú‰ÈÁø)‰ÐÁàÐÀ)Á‰ʉЍH0‹EЍP‰UЉÊH˜ˆTà‹Mĺgfff‰È÷êÁú‰ÈÁø)‰ЉEă}Äu¦‹ẼÀ9EÐ|›ë*‹EÐ;EÌu
¿.è…õÿÿƒmЋEÐH˜¶Dà¾À‰Çèmõÿÿƒ}ÐЃ}È„²¿eèSõÿÿƒ}Èy¿-èCõÿÿ÷]Èë
¿+è4õÿÿÇEÐëT‹MȺgfff‰È÷êÁú‰ÈÁø)‰ÐÁàÐÀ)Á‰ʉЍH0‹EЍP‰UЉÊH˜ˆTà‹MȺgfff‰È÷êÁú‰ÈÁø)‰ЉEȃ}Èu¦ƒ}Ð~ ëƒmЋEÐH˜¶Dà¾À‰Çè±ôÿÿƒ}Ðâ�H‹EødH3%(tè¦ôÿÿÉÃUH‰åHƒìH‰}øH‰uðH‹EøH‰Çèïöÿÿ¿:ènôÿÿH‹EðH‰Çè
ùÿÿ¿:èXôÿÿH‹©> H‰ÇèÀöÿÿ¿:è?ôÿÿ�ÉÃUH‰åHƒìH‰}øH‹y> H‹UøH‰ÖH‰Çè†ÿÿÿH�=ë"è…öÿÿ¿:èôÿÿ�ÉÃUH‰åH‹Ž> H…ÀtH‹r> HƒÀH‰g> ëEH‹f> H…Àu'H‹:> H‹> H‰ÖH‰Çè$ÿÿÿH�=„"è#öÿÿëH‹#> HƒÀH‰> HÇ> HÇ> ¿
èxóÿÿ�]ÃUH‰åHƒìH‰}øHƒ}øtrH�=D"èÍõÿÿH‹¯= H…ÀtNH�=³$èµõÿÿH‹—= H‰Çè¦õÿÿH‹�= H…ÀtH�=œ$èŽõÿÿH‹x= H‰ÇèõÿÿH�=ê!èsõÿÿH‹EøH‰Çègõÿÿ�ÉÃUH‰åHƒìH‰}øH‰uðH�=Æ!èHõÿÿHƒ}øt"¿'èÀòÿÿH‹EøH‰Çè+õÿÿ¿'èªòÿÿëH�=…!èõÿÿH�=�!èõÿÿHƒ}ðt"¿'èòÿÿH‹EðH‰Çèêôÿÿ¿'èiòÿÿëH�=D!èÒôÿÿ�ÉÃUH‰åHƒì H‰}øH‰uð‰UìH�=.!è°ôÿÿHƒ}øt'¿'è(òÿÿ‹UìH‹Eø‰ÖH‰ÇèÊôÿÿ¿'è
òÿÿëH�=è èvôÿÿH�=ó èjôÿÿHƒ}ðt'¿'èâñÿÿ‹UìH‹Eð‰ÖH‰Çè„ôÿÿ¿'èÇñÿÿëH�=¢ è0ôÿÿ�ÉÃUH‰åHƒì H‰}øH‰uðH‰UèH‰MàH‹EøH;Eðu¸ëiHƒ}øu+H‹EèH‰Çè>ýÿÿH�=c!èåóÿÿH‹EàH‰Çèíýÿÿ¸ë7Hƒ}ðu+H‹EèH‰ÇèýÿÿH�=Q!è³óÿÿH‹EàH‰Çè»ýÿÿ¸ë¸ÉÃUH‰åHƒì0H‰}øH‰uðH‰UèH‰MàL‰EØH‹�; H…À…“H‹‡; H…À…ƒH‹EðH3EèH#EøH…ÀtsH‹EØH‰Çè�üÿÿH�=²è4óÿÿH‹UðH‹EøH‰ÖH‰Çè±öÿÿH�=žèóÿÿH‹UèH‹EøH‰ÖH‰Çè’öÿÿH‹EàH‰Çè
ýÿÿHÇ; ¾H�=; è“ðÿÿ�ÉÃUH‰åHƒì0H‰}øH‰uðH‰UèH‰MàD‰EÜH‹Í: H…À…„H‹Å: H…ÀuxH‹EøH;EðtoH‹EàH‰ÇèÖûÿÿH�=ûè}òÿÿ‹UÜH‹Eø‰ÖH‰Çè�óÿÿH�=éè`òÿÿ‹UÜH‹Eð‰ÖH‰ÇèsóÿÿH‹EèH‰ÇèWüÿÿHÇQ: ¾H�=U: èàïÿÿ�ÉÃUH‰åHƒì@H‰}èH‰uà‰UÜH‰MÐL‰EÈD‰MØÇEüH‹: H…À…eH‹: H…À…UH‹EèH;Eàu‹E܃à…À…@H‹EèH;EàuÇEü‹E؃à…Àt8H‹EàH;Eè~‹E܃à…ÀtÇEüH‹EàH;Eè}O‹E܃à…ÀtEÇEüë<H‹UàH‹EèH9Âv‹E܃à…ÀtÇEüH‹UàH‹EèH9Âs‹E܃à…ÀtÇEüƒ}ü„¨H‹EÈH‰ÇènúÿÿH�=“èñÿÿ‹UØH‹Eà‰ÖH‰Çè(òÿÿ‹E܃à…ÀtH�=Œèîðÿÿ‹E܃à…ÀtH�=–èØðÿÿ‹E܃à…ÀtH�=˜èÂðÿÿ‹UØH‹Eè‰ÖH‰ÇèÕñÿÿH‹EÐH‰Çè¹úÿÿHdz8 ¾H�=·8 èBîÿÿ�ë�ÉÃUH‰åHƒì`H‰}ÈH‰uÀ‰U¼H‰M°L‰E¨D‰M¸‹E¼‰E܋E¸ƒà‰EàÇEäH‹`8 H…À…PH‹X8 H…À…@ƒ}¼u@H‹E¨H‰ÇèiùÿÿH�=NèðÿÿH‹E°H‰ÇèúÿÿHÇ8 ¾H�=8 è¡íÿÿH‹EÈH;EÀ„ïH‹M°H‹U¨H‹uÀH‹EÈH‰Çè•ûÿÿ…À„³HÇÈ7 ¾H�=Ì7 èWíÿÿ‹Eàƒøt1ƒøtSƒøumH‹EȶH¾ÀH‰EèH‹EÀ¶H¾ÀH‰EðÇEäëmH‹EÈ·H¿ÀH‰EèH‹EÀ·H¿ÀH‰EðÇEäëFH‹EÈH‹H‰EèH‹EÀH‹H‰EðÇEäë'H‹EȋH˜H‰EèH‹EÀ‹H˜H‰EðÇEäÇEà�H‹EèH;Eð„Ï‹E¸ƒà …Àt8ƒ}àw2HÇEø‹EàÁàH‹Uø‰ÁHÓâH‰ÐHƒèH‰EøH‹EøH!EèH‹EøH!EðH‹E¨H‰Çèé÷ÿÿH�=vè�îÿÿ‹E¼+E܃è‰ÀH‰ÇèéðÿÿH�=ïèqîÿÿ‹U¸H‹Eè‰ÖH‰Çè„ïÿÿH�=ÝèTîÿÿ‹U¸H‹Eð‰ÖH‰ÇègïÿÿH‹E°H‰ÇèKøÿÿHÇE6 ¾H�=I6 èÔëÿÿƒ}u‹EäHEȋEäHEÀƒ}Üt‹E܍Pÿ‰U܅À…Rþÿÿë�ë�ÉÃUH‰åóEìóMèóUäóMèó1TÁ.7–Àƒð„ÀtLóMäóTÁ.–Àƒð„Àt+fïÀ.Eè—Àƒð‰ÂfïÀ.Eä—À1ЄÀt
¸é°óEè.Eè{óEä.Eä{
¸é�óEäó\EèóEüfïÀ.EüvóMüó{WÁóEüfïÀ.EìvóMìó\WÁóEìóEü.Eüz3óMüóLTÁ.RwóEü.Eì—Àƒð„Àt¸ë¸]ÃUH‰åHƒìPH‰}ØH‰uЉUÌH‰MÀL‰E¸D‰MȋẺEìH‹EØH‰EðH‹EÐH‰EøH‹“4 H…À…ˆH‹‹4 H…À…xƒ}ìu@H‹E¸H‰ÇèœõÿÿH�=�èCìÿÿH‹EÀH‰ÇèKöÿÿHÇE4 ¾H�=I4 èÔéÿÿH‹EØH;EЄ'H‹MÀH‹U¸H‹uÐH‹EØH‰ÇèÈ÷ÿÿ…À„ñHÇû3 ¾H�=ÿ3 èŠéÿÿH‹EøóH‹EðóH‹Eðóó>óYÁ(Ëè½ýÿÿ…À…‘H‹E¸H‰ÇèÞôÿÿH�=kè…ëÿÿ‹EÌ+Eìƒè‰ÀH‰ÇèÞíÿÿH�=äèfëÿÿH‹Eð‹‰E´óE´èRïÿÿH�=ÐèGëÿÿH‹Eø‹‰E´óE´è3ïÿÿH‹EÀH‰Çè<õÿÿHÇ63 ¾H�=:3 èÅèÿÿƒ}ÈuHƒEðHƒEø‹Eì�Pÿ‰Uì…À…ÿÿÿë�ë�ÉÃUH‰åHƒì óEüóMøóUôH‰}èH‰uàH‹Ö2 H…À… H‹Î2 H…À…�óMôóEø‹Eü(Ñ(ȉEðóEðèœüÿÿ…ÀumH‹EàH‰ÇèÁóÿÿH�=æèhêÿÿ‹Eø‰EðóEðèWîÿÿH�=ÕèLêÿÿ‹Eô‰EðóEðè;îÿÿH‹EèH‰ÇèDôÿÿHÇ>2 ¾H�=B2 èÍçÿÿ�ÉÃUH‰åHƒìpóE¬H‰} H‰u˜‰U¨dH‹%(H‰Eø1ÀH�œH‰EÐH�¡H‰EØH�¨H‰EàH�£H‰Eè‹E¨ƒàH‰EÈHƒ}È”À¶ÀH‰E¸‹E¨Ñè‰ÀH‰EÀH‹¬1 H…À…²H‹¤1 H…À…¢ƒ}¨‡ö‹E¨H�…H�‹HcÐH�rHÐÿàóM¬ó¨TÁ.®–Àƒð„ÀtóE¬fïÉ.Áv¸ë¸H˜H‰E¸é óM¬óbTÁ.h–Àƒð„ÀtfïÀ.E¬v¸ë¸H˜H‰E¸ëaóE¬.E¬šÀ¶ÀH‰E¸ëLóM¬óTÁ.wóE¬.E¬z¸ë¸H˜H‰E¸ëHÇEÀH�dH‰EАH‹E¸H;EÈ„�H‹E˜H‰Çè™ñÿÿH�=¾è@èÿÿHƒ}ÈuH�=äè-èÿÿH‹EÀH‹DÅÐH‰ÇèèÿÿH�=™èèÿÿ‹E¬‰E”óE”èÿëÿÿH‹E H‰ÇèòÿÿHÇ0 ¾H�=0 è‘åÿÿ�H‹EødH3%(tè\åÿÿÉÃUH‰åHƒì0H‰}øH‰uðH‰UèH‰MàL‰EØD‰MÔH‹³/ H…À…NH‹«/ H…À…>‹Eԃà…ÀtLH‹EèH;Eð~!H‹UèH‹EðH)ÂH‰ÐH9Eø’À¶ÀH‰g/ ënH‹UðH‹EèH)ÂH‰ÐH9Eø’À¶ÀH‰F/ ëMH‹UèH‹EðH9Âv!H‹UèH‹EðH)ÂH‰ÐH9Eø’À¶ÀH‰/ ëH‹UðH‹EèH)ÂH‰ÐH9Eø’À¶ÀH‰÷. H‹ð. H…À„ŒH‹EØH‰ÇèðÿÿH�=Ôè¶æÿÿH‹Eø‹UԉÖH‰ÇèÉçÿÿH�=è™æÿÿ‹UÔH‹Eð‰ÖH‰Çè¬çÿÿH�=è|æÿÿ‹UÔH‹Eè‰ÖH‰Çè�çÿÿH‹EàH‰ÇèsðÿÿHÇm. ¾H�=q. èüãÿÿ�ÉÃUH‰åHƒì`H‰}ÈH‰uÀH‰U¸‰M´L‰E¨L‰M ‹E´‰E܋Eƒà‰EàÇEäH‹. H…À…H‹. H…À…üƒ}´u@H‹E H‰Çè&ïÿÿH�=èÍåÿÿH‹E¨H‰ÇèÕïÿÿHÇÏ- ¾H�=Ó- è^ãÿÿH‹EÀH;E¸„«H‹M¨H‹U H‹u¸H‹EÀH‰ÇèRñÿÿ…À„oHÇ…- ¾H�=‰- èãÿÿ‹Eàƒøt1ƒøtSƒøumH‹EÀ¶H¾ÀH‰EèH‹E¸¶H¾ÀH‰EðÇEäëmH‹EÀ·H¿ÀH‰EèH‹E¸·H¿ÀH‰EðÇEäëFH‹EÀH‹H‰EèH‹E¸H‹H‰EðÇEäë'H‹EÀ‹H˜H‰EèH‹E¸‹H˜H‰EðÇEäÇEà�‹Eƒà…ÀtLH‹EðH;Eè~!H‹UðH‹EèH)ÂH‰ÐH9EÈ’À¶ÀH‰›, ënH‹UèH‹EðH)ÂH‰ÐH9EÈ’À¶ÀH‰z, ëMH‹UðH‹EèH9Âv!H‹UðH‹EèH)ÂH‰ÐH9EÈ’À¶ÀH‰L, ëH‹UèH‹EðH)ÂH‰ÐH9EÈ’À¶ÀH‰+, H‹$, H…À„æ‹Eƒà …Àt8ƒ}àw2HÇEø‹EàÁàH‹Uø‰ÁHÓâH‰ÐHƒèH‰EøH‹EøH!EèH‹EøH!EðH‹E H‰ÇèíÿÿH�=Æè¨ãÿÿH‹EȋuH‰Çè½äÿÿH�=sè�ãÿÿ‹E´+E܃è‰ÀH‰ÇèæåÿÿH�=ìènãÿÿH‹Eè‹uH‰ÇèƒäÿÿH�=ÜèSãÿÿH‹Eð‹uH‰ÇèhäÿÿH‹E¨H‰ÇèLíÿÿHÇF+ ¾H�=J+ èÕàÿÿƒ}u‹EäHEÀ‹EäHE¸ƒ}Üt‹E܍Pÿ‰U܅À…–ýÿÿë�ë�ÉÃUH‰åHƒì0H‰}èH‰uàH‰UØH‰MÐH‹ã* H…À…ãH‹Û* H…À…ÓHƒ}ètdHƒ}àt]ÇEüë0‹UüH‹EèHж‹MüH‹EàHȶ8ÂtHÇŠ* �ë=ƒEü‹UüH‹EèHж„Àu¿‹UüH‹EàHж„Àu®ëH‹EèH;EàtHÇJ* H‹C* H…ÀtHH‹EÐH‰ÇèfëÿÿH‹UàH‹EèH‰ÖH‰Çè¢ìÿÿH‹EØH‰ÇèìÿÿHÇ* ¾H�=* è—ßÿÿ�ÉÃUH‰åHƒì@H‰}èH‰uà‰UÜH‰MÐL‰EÈH‹Ò) H…À…ñH‹Ê) H…À…áHƒ}ètlHƒ}àteÇEüë0‹UüH‹EèHж‹MüH‹EàHȶ8ÂtHÇy) �ëGƒEü‹Eü;EÜs;‹UüH‹EèHж„Àu·‹UüH‹EàHж„Àu¦ëH‹EèH;EàtHÇ1) ë�H‹') H…ÀtKH‹EÈH‰ÇèJêÿÿ‹UÜH‹MàH‹EèH‰ÎH‰ÇèìÿÿH‹EÐH‰ÇèïêÿÿHÇé( ¾H�=í( èxÞÿÿ�ÉÃUH‰åHƒìPH‰}ØH‰uЉUÌH‰MÀL‰E¸D‰MÈÇEèÇEìHÇEðHÇEøH‹‘( H…À…äH‹‰( H…À…Ôƒ}Ìu@H‹E¸H‰ÇèšéÿÿH�=
èAàÿÿH‹EÀH‰ÇèIêÿÿHÇC( ¾H�=G( èÒÝÿÿH‹EØH;EЄƒH‹MÀH‹U¸H‹uÐH‹EØH‰ÇèÆëÿÿ…ÀtHÇý' ¾H�=( èŒÝÿÿƒ}ÈtH‹EØH‰Eð‹EìH�ÅH‹EÐHÐH‹H‰Eøƒ}Èu‹EìH�ÅH‹EØHÐH‹H‰EðHƒ}ðtdHƒ}øt]ÇEèë0‹UèH‹EðHж‹MèH‹EøHȶ8ÂtHÇf' �ë=ƒEè‹UèH‹EðHж„Àu¿‹UèH‹EøHж„Àu®ëH‹EðH;EøtHÇ&' H‹' H…ÀtdH‹E¸H‰ÇèBèÿÿƒ}ÌvH�=ÉèãÞÿÿ‹EìH‰ÇèDáÿÿH‹UøH‹EðH‰ÖH‰ÇèaéÿÿH‹EÀH‰ÇèÍèÿÿHÇÇ& ¾H�=Ë& èVÜÿÿƒEì‹Eì;EÌ‚Èþÿÿë�ë�ÉÃUH‰åHƒìPH‰}ØH‰uЉỦMÈL‰EÀL‰M¸H‹EØH‰EðH‹EÐH‰Eø‹EȉEèH‹c& H…À…ÍH‹[& H…À…½ƒ}ètƒ}Ìu@H‹E¸H‰ÇèfçÿÿH�=Kè
ÞÿÿH‹EÀH‰ÇèèÿÿHÇ& ¾H�=& èžÛÿÿH‹EØH;EЄfH‹MÀH‹U¸H‹uÐH‹EØH‰Çè’éÿÿ…À„0HÇÅ% ¾H�=É% èTÛÿÿ‹ẺEìéêH‹Eð¶H‹Eø¶8„ÊH‹E¸H‰Çè»æÿÿH�=`
èbÝÿÿƒ}ÈvH�=6
èPÝÿÿ‹EÈ+Eèƒè‰ÀH‰Çè©ßÿÿH�=!
è1Ýÿÿ‹EÌ+Eìƒè‰ÀH‰ÇèŠßÿÿH�=�	èÝÿÿH‹Eð¶¶À¾AH‰ÇèÞÿÿH�=x	èïÜÿÿH‹Eø¶¶À¾AH‰ÇèüÝÿÿH‹EÀH‰ÇèàæÿÿHÇÚ$ ¾H�=Þ$ èiÚÿÿHƒEðHƒEø‹Eì�Pÿ‰Uì…À…ÿÿÿƒ}uH‹EØH‰Eð‹Eè�Pÿ‰Uè…À…Ûþÿÿë�ë�ÉÃUH‰åH‰}ø‰ðˆEô¶Eôƒøtƒøt,ƒøu;H‹Eøˆ$ H�þ# ë9H‹Eøf‰ñ# H�ê# ë%H‹EøH‰Ý# H�Ö# ëH‹Eø‰Ê# H�Ã# ]ÃUH‰åóEüóEüó«# H�¤# ]ÃUH‰åHƒìH‰}øH‰uðH‹ã# H…À…ÞH‹Û# H…À…ÎH‹ƒ# H‹UðH‰ÖH‰Çè�äÿÿH�=õè�ÛÿÿHƒ}ø„…¿:èÙÿÿH‹\# H…ÀtNH�=`
èbÛÿÿH‹D# H‰ÇèSÛÿÿH‹=# H…ÀtH�=I
è;ÛÿÿH‹%# H‰Çè,ÛÿÿH�=—è ÛÿÿH‹Eø¶< t
¿ è”ØÿÿH‹EøH‰ÇèÿÚÿÿHÇ
# ¾H�=# èœØÿÿ�ÉÃUH‰åHƒìH‰}øH‰uðH‹â" H…ÀuqH‹Þ" H…ÀueH‹Š" H‹UðH‰ÖH‰Çè—ãÿÿH�=è–ÚÿÿHƒ}øt ¿:èØÿÿ¿ èØÿÿH‹EøH‰ÇèoÚÿÿHÇ…" ¾H�=�" èØÿÿ�ÉÃUH‰åHƒìH‰}øH‰uðH‹" H‹UðH‰ÖH‰ÇèãÿÿH�=d	èÚÿÿHƒ}øt ¿:è–×ÿÿ¿ èŒ×ÿÿH‹EøH‰Çè÷Ùÿÿ¿
èv×ÿÿ�ÉÃUH‰åHƒì H‰}øH‰uð‰UìH‹EðH‰­! ‹EìH˜H‰¹! H‹º! HƒÀH‰¯! HÇŒ! Hlj! H�=º! è5×ÿÿ…ÀuèjH‹EøÿÐH�=Ÿ! è×ÿÿ…ÀuèVèëâÿÿ�ÉÃUH‰åH‰}øH‹EøH‰&! �]ÃUH‰åH‰}øH‹EøH‰! HÇ
! HÇ! HÇ! HÇ! HÇ! HÇ! HÇ! HÇÈ  HÇÅ  �]ÃUH‰å¿
èLÖÿÿH�=uè·Øÿÿ¿
è6ÖÿÿH‹§  H‰ÇèÒÚÿÿH�=hè’ØÿÿH‹”  H‰Çè·ÚÿÿH�=UèwØÿÿH‹�  H‰ÇèœÚÿÿH�=Jè\Øÿÿ¿
èÛÕÿÿH‹T  H…ÀuH�=˜è:ØÿÿëH�=’è,Øÿÿ¿
è«ÕÿÿH‹$  ]ÃUH‰å�]ÃUH‰å�]ÃUH‰å¿èàÖÿÿH˜A¸¹ºH‰ƿèåÿÿ�]ÃUH‰å¿è°ÖÿÿH˜A¸¹ºH‰ƿè×äÿÿ�]ÃUH‰å¿ðÿè€ÖÿÿH˜A¸¹ºH‰ƿè§äÿÿ�]ÃUH‰å¿èPÖÿÿH˜A¸¹ ºH‰ƿèwäÿÿ�]ÃUH‰å¿è ÖÿÿH˜A¸¹&ºH‰ƿèGäÿÿ�]ÃUH‰å¿ÿïÿèðÕÿÿH˜A¸¹,ºH‰ƿèäÿÿ�]ÃUH‰å¿èÀÕÿÿH˜A¸¹2ºH‰ƿèçãÿÿ�]ÃUH‰å¿è�ÕÿÿH˜A¸¹9ºH‰ƿè·ãÿÿ�]ÃUH‰å¿ è`ÕÿÿH˜A¸¹?ºH‰ƿè‡ãÿÿ�]ÃUH‰å¿ðÿè0ÕÿÿH˜A¸¹EºH‰ƿèWãÿÿ�]ÃUH‰å¿èÕÿÿH˜A¸¹KºH‰ƿè'ãÿÿ�]ÃUH‰å¿èÐÔÿÿH˜A¸¹QºH‰ÆHÇÇÿÿÿÿèõâÿÿ�]ÃUH‰å¿ÿÿÿÿèžÔÿÿH˜A¸¹WºH‰ÆHÇÇÿÿÿÿèÃâÿÿ�]ÃUH‰åH�=è=üÿÿº^H�5,H�=iýÿÿè…ûÿÿº_H�5LH�=�ýÿÿèmûÿÿº`H�5lH�=™ýÿÿèUûÿÿºaH�5ŒH�=±ýÿÿè=ûÿÿºbH�5¬H�=Éýÿÿè%ûÿÿºcH�5ÌH�=áýÿÿè
ûÿÿºdH�5ìH�=ùýÿÿèõúÿÿºeH�5H�=þÿÿèÝúÿÿºfH�5DH�=)þÿÿèÅúÿÿºgH�5dH�=Aþÿÿè­úÿÿºhH�5„H�=Yþÿÿè•úÿÿºiH�5“H�=qþÿÿè}úÿÿºjH�5”H�=‹þÿÿèeúÿÿèyûÿÿ]ÐAWAVI‰×AUATL�%n UH�-n SA‰ýI‰öL)åHƒìHÁýèoÑÿÿH…ít 1Û„L‰úL‰öD‰ïAÿÜHƒÃH9ÝuêHƒÄ[]A\A]A^A_Ðf.„óÃHƒìHƒÄÃOKPASSFAILIGNORENULL.  Expected  Was  to be greater than  to be less than or equal to  Element  Byte  Memory Mismatch. Values Not Within Delta  You Asked Me To Compare Nothing, Which Was Pointless. Expected pointer to be NULL Actual pointer was NULLNot InfinityNegative InfinityNaNDeterminateInvalid Float TraitUnity Shorthand Support DisabledUnity Floating Point DisabledUnity Double Precision DisabledUnity 64-bit Support Disabled----------------------- Tests  Failures  Ignored Function  Argument 0naninf“çÿÿ“çÿÿÙçÿÿÙçÿÿèÿÿèÿÿ-èÿÿ-èÿÿINFO€–˜@B€ÿÿÿÿÿ€?ùP A?¬Å'7test/test_perfect_numbers.ctest_smallest_perfect_number_is_classified_correctlytest_medium_perfect_number_is_classified_correctlytest_large_perfect_number_is_classified_correctlytest_smallest_abundant_number_is_classified_correctlytest_medium_abundant_number_is_classified_correctlytest_large_abundant_number_is_classified_correctlytest_smallest_prime_deficient_number_is_classified_correctlytest_smallest_non_prime_deficient_number_is_classified_correctlytest_medium_deficient_number_is_classified_correctlytest_large_deficient_number_is_classified_correctlytest_edge_case_is_classified_correctlytest_zero_is_rejectedtest_negative_integer_is_rejected;ð=Ëÿÿ<lËÿÿd|Ëÿÿ†Ìÿÿ|ýÌÿÿœ£Íÿÿ¼ßÍÿÿÜÇÎÿÿü×ÏÿÿÐÿÿ<¹Ðÿÿ\3Ñÿÿ|¢Ñÿÿœ˜Öÿÿ¼ðÖÿÿÜ+×ÿÿü·×ÿÿ?Øÿÿ<ÔØÿÿ\vÙÿÿ|
ÚÿÿœÌÚÿÿ¼ÛÿÿÜ Ýÿÿü»ßÿÿíàÿÿ<Àâÿÿ\’ãÿÿ|âåÿÿœcçÿÿ¼ºêÿÿÜÈëÿÿüçìÿÿïÿÿ<5ñÿÿ\£ñÿÿ|ÂñÿÿœÃòÿÿ¼SóÿÿܹóÿÿüCôÿÿYôÿÿ<Òôÿÿ\Šõÿÿ|‘õÿÿœ˜õÿÿ¼ÈõÿÿÜøõÿÿü(öÿÿXöÿÿ<ˆöÿÿ\¸öÿÿ|èöÿÿœ÷ÿÿ¼H÷ÿÿÜx÷ÿÿü¨÷ÿÿ	Ú÷ÿÿ<	øÿÿ\	\ùÿÿ|	ÌùÿÿÄ	zRx�hÉÿÿ+zRx�$ØÈÿÿPFJw€?;*3$"DÉÿÿ\ÊÿÿwA†C
r|YÊÿÿ¦A†C
¡œßÊÿÿ<A†C
w¼ûÊÿÿèA†C
ãÜÃËÿÿA†C
ü³Ìÿÿ8A†C
sËÌÿÿªA†C
¥<UÍÿÿzA†C
u\¯ÍÿÿoA†C
j|þÍÿÿöA†C
ñœÔÒÿÿXA†C
S¼Óÿÿ;A†C
vÜ'ÓÿÿŒA†C
‡ü“ÓÿÿˆA†C
ƒûÓÿÿ•A†C
�<pÔÿÿ¢A†C
�\òÔÿÿ”A†C
�|fÕÿÿÂA†C
½œÖÿÿ³A†C
®¼›Öÿÿ¡A†C
œÜØÿÿ›A†C
–ü—Úÿÿ2A†C
-©ÛÿÿÓA†C
Î<\ÝÿÿÒA†C
Í\ÞÿÿPA†C
K|>àÿÿ�A†C
|œŸáÿÿWA†C
R¼ÖäÿÿA†C
	ÜÄåÿÿA†C
üÃæÿÿ7A†C
2ÚèÿÿA†C
<ÑêÿÿnA†C
i\ëÿÿA†C
Z|ëÿÿA†C
üœÿëÿÿ�A†C
‹¼oìÿÿfA†C
aܵìÿÿŠA†C
…üíÿÿA†C
QíÿÿyA†C
t<níÿÿ¸A†C
³\îÿÿA†C
B|ííÿÿA†C
BœÔíÿÿ0A†C
k¼äíÿÿ0A†C
kÜôíÿÿ0A†C
küîÿÿ0A†C
kîÿÿ0A†C
k<$îÿÿ0A†C
k\4îÿÿ0A†C
k|Dîÿÿ0A†C
kœTîÿÿ0A†C
k¼dîÿÿ0A†C
kÜtîÿÿ0A†C
kü„îÿÿ2A†C
m–îÿÿ2A†C
m<¨îÿÿOA†C
JD\ØïÿÿeB�BŽE �B(ŒH0†H8ƒM@r8A0A(B BBB¤ðÿÿ@À
”4 M ¨M õþÿo˜¨¸
° O `` À	ûÿÿoþÿÿopÿÿÿoðÿÿoXùÿÿo°M ö&P GCC: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0,Jw,¾Á�(,«N0Ѻ†§JwSSwœint¢	-gZJwœS‘\	sumS‘h
e(	iS‘lé�Ú§Á�(v¿8OHHCü
€kBkH{H¿VNÈ!·S'-²(·@þ){H	int
·Á-ΆÞH>

ÞH@
Ë
Ý
ŒO�O$G

$$
0~xØH³fÞ
Nøhñ
^	iø‰jÿ	k·
„ŽHd�OÅ“”
ªŠ”Ÿ
º\È0
Ê@êÊ
Ú}ØõjŽö·6û¾
üžýŽþ e
ÿ(
*0
A8
¿@
ÙH
ÉP
ãX
ô¢`
…
¨h
·p
Ù·t
qx
ìê€
Í	ø‚
f®ƒ
&¾ˆ
u%�
‘	-˜
˜	. 
Ÿ	/¨
¦	0°
­	2C¸
Ä3·À
85ÄÄpš ¢ÿ¡¢L
¢¨º¦·qê$¾Hj$ÔHp©?ÔÉ@ÔAÔ+ù	‡¨Ê	ˆ¨”	‰¨3{06ñƒ¦þÖdðª'
$Y!"å
$—("A$
BŒDèH‘U’8ž7
¦ñ¡ð)SMµÖ-°
©·
ðÑñ¬J£/d§
‡@

$·
Jñ»|
ïè
‰¿[
|Á+
ÀÃý
#Äý
òÆý
NÇý
‘
ɪ 
W
ʪ(
À	˪0
¹Ìª8
Öͪ@
ΪH
ËÔÃP;Ø�+B
7ä	˜Bç™Bs
šB››B	�B.žBCŸB\ B+	@P +ÈH
¸G"	À4+îH
ÞS#	Ã4_$	È4+%H
k%	Í4'î	Ô4c(È	Ù4+uH

eš
)u	à4+ŸH
�Ê*Ÿ	ë4+ÉH
¹®+É	5+óH
ãí,ó	 5+H

Ð-	85+GH	
7Í
.G	H5ï	/%	R5È0ó	`5+›H
‹E1›	€5+ÅH6
µ�2Å	 5+ïH
ßw3ï	à5+	H
		¹4		6q6î	6+X	H
H	K7X		 6¯8ó	06+—	H
‡	B	9—		B6+Á	H
±	­:Á		H6+ë	H
Û	];ë		`6›=	€6w>	°6ƒ?	à6�@	7+Y
H
I
AY
	 7+ƒ
H
s
8Bƒ
	87Cu	@7,DG	P7hEG	`7«Fu	p7Œ4i8Žni16�yi32�„i64’Ÿf•0^šñ
	(P ¬6·–/¸œX&/yœ– ø&ý‘h¸ /œÄ ø ý‘h!€
}.Šœ Õ
$‘h ý‘` ´	¾‘\!Wý.fœM"msgýý‘h R
ýµ‘`!Rí‡-�œŠ"msgíý‘h R
íµ‘`!N	ˆ,œÇ"msgËý‘h R
˵‘`#›¶ùg,œù"num¶7‘lÿ$#
œùù+nœA
"numœÅ‘h X	œY‘d!–Kâ)œ	 €Kù‘H 	Lù‘@ Mi‘¼ 	Ni‘¸"msgOý‘° MPµ‘¨ �Qˆ‘pS	‘`T	‘h
U^‘XV^‘\å!u
ü«'7œÄ €üù‘H 	ýÄ‘@ 	þi‘¼"msgÿý‘° Mµ‘¨ �ˆ‘¸%i^‘X%j^‘\«
ý‘`%actý‘hý!äÔŒ&œB €Ôý‘X 	Õý‘P Öi‘L"msg×ý‘@ Mص‘¸%iÚ^‘l!í~%œª €­ý‘X 	®ý‘P"msg¯ý‘H M°µ‘@%i²^‘l!W
5'"WœÅ 5µ‘¸ €6ù‘° 	7ù‘¨ 	8i‘¤"msg9ý‘˜ M:µ‘� ”
;²‘ �<ˆ‘
>^‘L?ñ‘Pï@ñ‘T&#S5Uº‘X*Vº‘`&u$2’º‘h!]	¦ �œ> µ‘h €Å‘` 	Å‘X"msg	ý‘P M
µ‘H ”
²‘D!×8VPœÜ 	8Õ‘œ"msg9ý‘� M:µ‘ˆ ”
;V‘˜�=Ü‘@î>º‘¸„?º‘¨@º‘°ýìH!ü	%„ÒœV %Õ‘l €&Õ‘h 	'Õ‘d"msg(ý‘X M)µ‘P!v	õ±Óœ €õ‘H 	ö‘@ 	÷i‘¼"msgøý‘° Mùµ‘¨ �úˆ‘¸
ü^‘\|ý‘`ýþ‘hÕ'@î·2œe îÊ‘\ €îÊ‘X 	îÊ‘T(ðÊ‘l!Ùs䛜q €sù‘¸ 	tù‘° 	ui‘¬"msgvý‘  Mwµ‘˜ ”
x²‘¨ �yˆ‘
{^‘L|ñ‘Pï}ñ‘T&É—5’º‘X*“º‘`&�2¸º‘h!&EC¡œú Ã
EÅ‘X 	FÅ‘P Ü	Gü‘L"msgHý‘@ MIµ‘¸ ”
J²‘HàL·‘l!Œ0�³œd €0Å‘h 	1Å‘`"msg2ý‘X M3µ‘P ”
4²‘L!~ÎœΠÅ‘h €Å‘` 	Å‘X"msgý‘P Mµ‘H(¦ù·:”œ- €ùù‘h 	úù‘` Mûµ‘X"msgüý‘P)¾ؘ¢œy €Øý‘h 	Ùý‘` Úi‘\)A½•œ¶ €½ý‘h 	½ý‘`)†¦{ˆœä"msg¦ý‘h*0	ŽïŒœ)”†´;œ, R
†µ‘h)ç[\Xœi ®[ý‘h R
[µ‘`!ÁföœÃ "Áå‘œ~Ⱦ	¸7sÉ�	´7QÊ�	°7(ÍÚ‘¬&(
•å„‘°%nå„‘´{æ·‘¸Ðç·‘¼‚ç·‘@%bufèÑP+X
Œ{ÉóÚ‘D+� üÚ‘H&�tÉ
Ú‘L$ÓH!ýž÷oœ, žµ‘X (žµ‘P ª‘h%i¡„‘d!„}zœ‡ („µ‘X H„+‘T�†·‘l‡$‘k!•qÓ
ªœÄ (qµ‘Xsª‘h!}b›
8œ ;bÅ‘X(dª‘h!r/‹	œ> (/Å‘h ”
/²‘d!Ú
	£èœŠ L	ý‘X 	i‘T%pchý‘h,á€g<œÄ-L€ý‘X.pch‚ý‘h/ºNÁ¦œ0pchNý‘håk\§N0Ñl¿8OHHCü
€kBkH{H¿VNÈ!·S'-²(·@þ){H	intÁ-ɆÙH>
H@
Ë
Ý
ŒO�O
G
$~xØHŽHd�OÅ“?Š”J}ØõëŽö·6û¾
üžýŽþ e
ÿ(
*0
A8
¿@
ÙH
ÉP
ãX
ô#`
…
)h
·p
Ù·t
qüx
ìà€
Í	î‚
f/ƒ
&?ˆ
u%�
‘	-˜
˜	. 
Ÿ	/¨
¦	0°
­	24¸
Ä3·À
85EÄpš #ÿ¡#L
¢)º¦·òk?HëUHp©?UÉ@UAU!ù	‡)Ê	ˆ)”	‰)çƒþÖdðª'
$Y!"å
$—("A$
BŒDèH‘U’Á²
ÀÃ~
#Ä~
òÆ~
NÇ~
‘
ÉU 
W
ÊU(
À	ËU0
¹ÌU8
ÖÍU@
ÎUH
ËÔ¾P;Ø!É¾ä	˜Éç™És
šÉ››É	�É.žÉCŸÉ\ É·
TwœZ·Ð2OœYTž22œ¸Nl22œ¬H<20œxB20œ$<Ü10œã6¬10œq/|10œÓ)L10œ{#10œÎì00œ¼00œ8Œ00œ®\00œ¯U0œkN0œ%>I:;((
$>:;I.?:;'I@—B:;I	4:;I
%:;II!I/$>:;
:;I8:;	$>
&II

:;I8:;<4:;I?<4:;I?<:;I'>I:;(>I:;:;!4G:;4:;I:;
:;I4:;I.?:;'I@–B.?:;'@—B :;I!.?:;'@–B":;I#.?:;'I@—B$&%4:;I&'.:;'I@—B(.:;'I@–B).:;'@–B*.?:;'@–B+,.?:;'@–B-:;I.4:;I/.:;'@–B0:;I%:;II!I/$>:;
:;I8:;	$>
I&I

:;I8:;<4:;I?<4:;I?<>I:;(:;!>I:;(
.?:;'I@–B.:;'@–B.?:;'@—BrAû
srcperfect_numbers.cperfect_numbers.h	Jugvu‘ÉdJ‡ƒuƒuƒvYòû
test/vendor/usr/include/x86_64-linux-gnu/bits/usr/include/x86_64-linux-gnu/bits/types/usr/include/usr/lib/gcc/x86_64-linux-gnu/7/includeunity.csetjmp.h__sigset_t.hsetjmp.htypes.hstddef.hunity_internals.hlibio.hstdio.h	Á쬮n.®Ÿžt.®Ÿ	ž*ŸŸv<»„v
.»uX¬ö<儮[¬®1®Ÿ½®Ÿ¿ŸŸvfX¬f@åØ˟tvËvŸ½vŸ¿ŸŸžs.
ºv. Â*ŸŸ„@»„wŸL»A»…0H6F­u@v„M0Ÿƒh$vò
f@ó“’Êʾ¿ oJJf<È䡠ŸN>þº„X®úºˆXôöºŽXuv	ò"Ê.�­.�®>vÊ.�å.�„	ɻZ.)®è°ž­Mh®‘Nf<t�=i0ŸGf'u09›f±0‚Ÿqm  hŸ\¡u09›fk0rlk򻟻Ÿå¢@»Y»Ÿ@K¼>¼ƒÚ#­® @»v¼¼»弻潼@ó»vŸ»¾¼»vŸ»¤,¼B/»vŸ¾¼»vŸ¤,¼<vžwv»»»xv»»»wY.­òô»»/»/»v¬ 6­ò¼ »»»»v¬ 	.×uòôž×žv žžužž”ÈžuÈžw »»ž»ž»ž»»f¬> .×g‘vòôh@Ûæ´#ååu1ååu2­­u3»»uu#Øžhƒ‘ƒ„»»/»»»¯hvDtfo.	<Æ !.0òòòž¬	¬
ž‚
JžJ¬‚.tY	.×gƒ„òôh@Ûæ±4»»/>»®hZqXo.	< 6×òõ$»8»x¬
 5tå,Ÿå®òô.òÖtXg[òžtXg2/2‚¬tXg1ƒ­#ػ»v¼¼ú»O¬3 —Xåòô  ö÷ÊöÚô»»»»»]¬% .×g‘vòôh@Ûæ´#ååu1ååu2­­u3»»uu#  ö÷ÊöÚôžhƒ‘ƒ„»»å»/»å»å»¯hv«tfo.	<ß 5wòõtv’ʭy 0Jþ
. °¼»/»e¬ 6¡òõtv’ʭy 0J‚þ
. qÈ ¼»Y»e¬ 	.×uuƒ„òõh@Û®¯h‡ƒh†tv’ʭy 0Jþ
. °¼»h»®/»®A 
<6 
.Ƀƒiòôfh@Ûæ±gZZ»»h»0»/»g»g»®YkXhd‚o.	<' .É1Ÿ“­”­”Ÿv3‘Éu.óòôY»®¡¼»弻潮 ½d¬ 2óº¼Y»vŸŸ¼v¬ 2óY»vŸŸ¼Ÿ@/­»!ZôYhô[Y@ƒ­@ƒ­­­­­­­®Z@KŸ»Ÿå»å»廟¼ڿ¡uÃJû
test/usr/include/x86_64-linux-gnu/bits/usr/include/x86_64-linux-gnu/bits/types/usr/include/usr/lib/gcc/x86_64-linux-gnu/7/includetest/vendortest/../srctest_perfect_numbers.csetjmp.h__sigset_t.hsetjmp.htypes.hstddef.hunity_internals.hlibio.hstdio.hperfect_numbers.h	N0K?K?K)?L)?L)?L)?L)?L)?L)@L)?L)?L)?L)?L+?L+?K¼uuuuuuuuuuuuvYvalueDEFICIENT_NUMBERGNU C99 7.5.0 -mtune=generic -march=x86-64 -g -std=c99 -fstack-protector-strongclassify_numberPERFECT_NUMBERsrc/perfect_numbers.cERRORkind/home/h-kiwata/workspace/kiwata/kernel/script/LowLevelProgramming/exercism/c/perfect-numbersABUNDANT_NUMBERUNITY_EQUAL_TOCurrentTestNameUnityTestFunctionUnityStrDeltaUNITY_GREATER_THAN_shortbuf_IO_lock_texponentis_traitnibblestderrUnityFloatToPtrUnityStrDetail2Name_IO_buf_endAbortFrameUNITY_DISPLAY_STYLE_INT8UNITY_ARRAY_TO_ARRAYUNITY_FLOAT_IS_NANCurrentTestIgnored_IO_write_endUnityStrResultsTestsUNITY_GREATER_OR_EQUALUNITY_DISPLAY_STYLE_INT16UnityAssertBits_flagsUnityPrintNumberUnsignedUnityStrGtTestIgnoresUNITY_UINTUnityStrOrEqualfailedUnityStrPass_markersUnityPrintMaskUnityStrResultsFailuresUNITY_FLOAT_TRAIT_TUNITY_DISPLAY_STYLE_TCurrentDetail2UnityStrInvalidFloatTraitUnityStrNullPointerForExpectedUnityAssertEqualMemoryUnityStrDetUnityStrNullPointerForActualCurrentTestFailedUNITY_DISPLAY_STYLE_HEX64UnityPrintNumberHextrait_indexUNITY_DISPLAY_STYLE_HEX8UnityUnityPrintExpectedAndActualStringsUNITY_FLOAT_IS_NOT_NEG_INFUNITY_UINT64UnityAssertEqualNumberUNITY_FLOAT_IS_NOT_INF_pos__sigset_tstdoutUNITY_FLOAT_TRAIT_IO_save_endUNITY_DISPLAY_STYLE_INT32UNITY_FLOAT_INVALID_TRAITfloatactual_valexpect_valUNITY_DOUBLElineNumberUnityBeginUnityStrSpacerUnityPrintNumberByStyleUNITY_INTUnityTestResultsFailBeginfileUNITY_UINT8__jmp_buf_IO_backup_baseUnityAssertEqualIntArrayCurrentDetail1divisornum_elements_filenoUNITY_STORAGE_TUnityStrErrDoubleUnityFloatsWithinUnityIgnoreUnityQuickCompareptr_expsize_tnibblesUNITY_FLOAT_IS_NOT_NAN_IO_read_baseUnityEndUNITY_SMALLER_THANUnityStrMemoryUnityAssertFloatSpecialincrementstdin_nextbytesptr_actUNITY_FLOAT_IS_DETUnityAssertGreaterOrLessOrEqualNumberstring__jmpbufUNITY_FLOATUnityStrDetail1Nameptr_expectedUNITY_INT16n_intUnityStrIgnoreUNITY_DISPLAY_STYLE_INT64_modeUnityStrWasUNITY_SMALLER_OR_EQUALUnityStrLtfilenameUnityPrintFloat_IO_markerUnityStrNullUNITY_WITHIN_IO_read_ptrUnityStrErr64max_scaledUnityStrErrShorthandUnityStrNotUnityPrintNumber_IO_write_basetrait_names_IO_2_1_stdin_UnitySetTestFile_IO_2_1_stdout__IO_save_baseUnityTestResultsBeginptr_actualUNITY_INT32UNITY_INT8UnityStrErrFloatUnityConcludeTestUnityStrNaNUnityFailsizeUnityAssertNumbersWithinUnityAssertEqualFloatArray__pad1__pad2__pad3__pad4__pad5FuncLineNumTestFailures_vtable_offsetcompareUnityStrOkUnityStrByteUnityAssertFloatsWithinUNITY_ARRAY_TO_VALUNITY_DISPLAY_STYLE_UINTUNITY_FLOAT_IS_NOT_DETUnityAssertNumbersArrayWithinUnityAssertEqualStringArrayCurrentTestLineNumberUNITY_FLOAT_IS_NEG_INF_IO_read_endshort intFuncUnityPrintLenUNITY_ARRAY_UNKNOWNlong intUnityStrBreakerlengthcurrent_bitdiffUNITY_UNKNOWNnumber_to_printUnityStrInfUnityMessageUNITY_INT64_IO_FILE_plussig_digitsUNITY_FLAGS_TUNITY_DISPLAY_STYLE_UINT64__mask_was_savedUnityAssertEqualStringtest/vendor/unity.cshould_be_trait__saved_maskUNITY_DISPLAY_STYLE_UINT16_lockUnityStrResultsIgnoredlong unsigned intUNITY_DISPLAY_STYLE_UNKNOWN_old_offset_IO_FILEUnityAddMsgIfSpecifiedUnityStrPointlessUnityStrNegInfUnityPrintExpectedAndActualStringsLenUnityAssertEqualStringLenUNITY_DISPLAY_STYLE_INTUnityNumToPtrUNITY_DISPLAY_STYLE_HEX16unsigned char_sbuflineNumberOfTests_IO_write_ptrUnityStrFailUnityDefaultTestRunstyleUnityStrExpectedexpdUNITY_COMPARISON_TthresholdUnityStrElement__off_tUNITY_DISPLAY_STYLE_UINT32deltaFuncNameshort unsigned intinput_numberUNITY_FLOAT_IS_INF__valnibbles_to_printUNITY_DISPLAY_STYLE_UINT8min_scaleddouble_chainUNITY_DISPLAY_STYLE_HEX32UnityIsOneArrayNullUnityPrintCharfactordecimals_flags2UnityPrint_cur_columnUNITY_UINT32_IO_2_1_stderr___off64_tUNITY_DISPLAY_STYLE_CHAR_unused2_IO_buf_base__jmp_buf_tagtest/test_perfect_numbers.ctest_large_deficient_number_is_classified_correctlytest_edge_case_is_classified_correctlytest_large_abundant_number_is_classified_correctlytest_large_perfect_number_is_classified_correctlytest_medium_perfect_number_is_classified_correctlysetUptest_smallest_prime_deficient_number_is_classified_correctlytest_smallest_perfect_number_is_classified_correctlytest_smallest_non_prime_deficient_number_is_classified_correctlytest_medium_deficient_number_is_classified_correctlytest_negative_integer_is_rejectedtest_medium_abundant_number_is_classified_correctlytearDowntest_zero_is_rejectedtest_smallest_abundant_number_is_classified_correctlymain8Tt˜¸¨Xp	 
`Àà
0@”4 4Ä:¸< M ¨M °M  O P  P ñÿp°!7 P F¨M m@y M hñÿ˜ñÿ Ô4­Ù4¼à4Íë4Ù5ä 5ï85
ÿH5
R5`5+€59 57Kà5j6‡6“ 6	Ÿ06®B6ºH6Æ`6à 7ð87@7P7
4`7
Hp7\Á¦k°7{´7‹¸7›\X±´;Ë{ˆâ•˜¢+:”?2Q(P cñÿz\00¯Œ00â¼00ì00J10~L10±|10î¬10/Ü10d20˜<20¿l22Õž22ñÿ÷œDñÿ¨M °M  M 2Ä:E O [�4kÃ4x€6!�Jw�²g,ÂŒ&Ü‹	ô { P À4P "„Ò:/KÓ
ªd�³e”4{~%’®±Óɦ �â}.Šö£èg</y9}zMbâ)yP †ù+n”C¡º ÉÈ4ÖP ã 4ò@P øU0	 4e	ä›*	N00	÷oXQ ?	›
8@+P	à6 b	'"W€	P Œ	Ð2O‘	¦	.f³	7Á	°6Ò	P Þ	†,è	Í4÷	 
–/¸
ïŒ,
"	ÀH
‡-�T
ÎÂd
«'7€
VP˜
föcrtstuff.cderegister_tm_clones__do_global_dtors_auxcompleted.7698__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entryunity.cUnityStrNullUnityStrSpacerUnityStrExpectedUnityStrWasUnityStrGtUnityStrLtUnityStrOrEqualUnityStrElementUnityStrByteUnityStrMemoryUnityStrDeltaUnityStrPointlessUnityStrNullPointerForExpectedUnityStrNullPointerForActualUnityStrNotUnityStrInfUnityStrNegInfUnityStrNaNUnityStrDetUnityStrInvalidFloatTraitUnityStrBreakerUnityStrResultsTestsUnityStrResultsFailuresUnityStrResultsIgnoredUnityStrDetail1NameUnityStrDetail2NameUnityPrintCharmax_scaled.3244min_scaled.3243sig_digits.3242UnityTestResultsBeginUnityTestResultsFailBeginUnityAddMsgIfSpecifiedUnityPrintExpectedAndActualStringsUnityPrintExpectedAndActualStringsLenUnityIsOneArrayNullUnityFloatsWithinUnityQuickComparetest_perfect_numbers.ctest_smallest_perfect_number_is_classified_correctlytest_medium_perfect_number_is_classified_correctlytest_large_perfect_number_is_classified_correctlytest_smallest_abundant_number_is_classified_correctlytest_medium_abundant_number_is_classified_correctlytest_large_abundant_number_is_classified_correctlytest_smallest_prime_deficient_number_is_classified_correctlytest_smallest_non_prime_deficient_number_is_classified_correctlytest_medium_deficient_number_is_classified_correctlytest_large_deficient_number_is_classified_correctlytest_edge_case_is_classified_correctlytest_zero_is_rejectedtest_negative_integer_is_rejected__FRAME_END____init_array_end_DYNAMIC__init_array_start__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___libc_csu_finiUnityStrPassUnityStrErrShorthandclassify_numberputchar@@GLIBC_2.2.5UnityFloatToPtrUnityAssertEqualStringLenUnityPrintNumberByStyle_ITM_deregisterTMCloneTableUnityStrOk_edataUnityAssertFloatsWithinUnitySetTestFileUnityPrintNumberUnsignedUnityAssertEqualNumberUnityAssertEqualString__stack_chk_fail@@GLIBC_2.4UnityAssertEqualFloatArrayUnityAssertNumbersWithinUnityDefaultTestRunUnityPrintLenUnityPrintUnityBegin__libc_start_main@@GLIBC_2.2.5UnityPrintNumberHex_setjmp@@GLIBC_2.2.5UnityAssertEqualMemory__data_startUnityNumToPtrUnityAssertGreaterOrLessOrEqualNumber__gmon_start__UnityStrFail__dso_handle_IO_stdin_usedUnitytearDown__libc_csu_initUnityAssertEqualIntArraysetUpUnityPrintMaskUnityPrintNumberUnityStrErrDoubleUnityAssertNumbersArrayWithin__bss_startmainlongjmp@@GLIBC_2.2.5UnityMessageUnityStrErr64UnityStrErrFloat__TMC_END__UnityFailUnityStrIgnore_ITM_registerTMCloneTableUnityEndUnityConcludeTest__cxa_finalize@@GLIBC_2.2.5UnityIgnoreUnityAssertBitsUnityAssertEqualStringArrayUnityAssertFloatSpecialUnityPrintFloat.symtab.strtab.shstrtab.interp.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.dynamic.data.bss.comment.debug_aranges.debug_info.debug_abbrev.debug_line.debug_str88#TT 1tt$Döÿÿo˜˜N¸¸ðV¨¨°^ÿÿÿoXXkþÿÿopp0z  À„B```ŽÀÀ‰ààP”00�@@R.£”4”4	© 4 4" ±Ä:Ä:ô¿¸<¸<èÉ M  MÕ¨M ¨Má°M °Mð˜ O  O`êP Pð P P8 õ0P)þ9P�
ÉP”"]sË'(x3
30[‚	h”¨ e	¤¨
¸®>

Community comments

Find this solution interesting? Ask the author a question to learn more.

What can you learn from this solution?

A huge amount can be learned from reading other people’s code. This is why we wanted to give exercism users the option of making their solutions public.

Here are some questions to help you reflect on this solution and learn the most from it.

  • What compromises have been made?
  • Are there new concepts here that you could read more about to improve your understanding?