{"id":18648470,"url":"https://github.com/minhaskamal/programmertransformation","last_synced_at":"2025-09-01T16:45:30.439Z","repository":{"id":72584246,"uuid":"115875555","full_name":"MinhasKamal/ProgrammerTransformation","owner":"MinhasKamal","description":"The Insipid Journey of Homo Programmer","archived":false,"fork":false,"pushed_at":"2021-02-01T16:44:21.000Z","size":55,"stargazers_count":12,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-01T17:29:09.195Z","etag":null,"topics":["beginner","coder","coding-challenge","evolution","improvement","prime-numbers","programmer","software-engineer","transformation"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MinhasKamal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-31T17:02:47.000Z","updated_at":"2025-04-05T06:25:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"246a9b2b-d442-4dda-8ab5-5859f2dea6cc","html_url":"https://github.com/MinhasKamal/ProgrammerTransformation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MinhasKamal/ProgrammerTransformation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinhasKamal%2FProgrammerTransformation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinhasKamal%2FProgrammerTransformation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinhasKamal%2FProgrammerTransformation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinhasKamal%2FProgrammerTransformation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MinhasKamal","download_url":"https://codeload.github.com/MinhasKamal/ProgrammerTransformation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinhasKamal%2FProgrammerTransformation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273158226,"owners_count":25055859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beginner","coder","coding-challenge","evolution","improvement","prime-numbers","programmer","software-engineer","transformation"],"created_at":"2024-11-07T06:31:14.636Z","updated_at":"2025-09-01T16:45:30.402Z","avatar_url":"https://github.com/MinhasKamal.png","language":"C++","readme":"# ProgrammerTransformation\n#### The Journey of A *Homo programmer*\nSo, you have fallen love at the very first sight! And, thank god, it is not one of those imbecile apes. It is rather a species from a completely different kingdom- ***Machinia***.\n\n\n## Assignment:\nWrite a program that tells if an integer is prime or not.\n\n\n## The Journey:\n\n### 01. [Base Programmer](01.BaseProgrammer.c)\nThough you knew how prime numbers work, it took a long time to come up with this logic. Also, You made several mistakes on the way. But now, you are proud of your brilliant solution.\n\n``` BaseProgrammer.c\nint func(int a)   \n{ \nint x,i, r;\n\tx = 0;\n\ti = 0 ;\nfor(i=1; i\u003c=a ; i=i+1 )\n\t{\n\tif(a%i == 0)\n\t{x=x+1 ;}\n\t }\nif( x == 2)\n\t{r =  1;}\nelse\n\t{r = 0;}\n return r ;  \n\n}\n```\n\n### 02. [Programmer Kaioken x4](02.ProgrammerKaioken4.c)\nYou have learned to use flags, and think that they are the coolest. Also, indentation is super important!\n\n``` ProgrammerKaioken4.c\nint pri_num(int a) {\n\tint i = 0, f = 0;\n\tfor (i = 2; i \u003c a; i ++)\n\t\tif (a % i == 0) f = 1;\n\n\tif (f == 0) return 1;\n\telse return 0;\n}\n```\n\n### 03. [Programmer Kaioken x10](03.ProgrammerKaioken10.c)\nYou don't need to calculate all the way to the end; finding one divisor is enough. So, just `return`; no need for 'flag'. `break` would do too, but `return` is better.\n\n``` ProgrammerKaioken10.c\nint prime_num(int x){\n\tint i = 2;\n\twhile (i \u003c x){\n\t\tif (x % i == 0){\n\t\t\treturn 0;\n\t\t}\n\t\ti++;\n\t}\n\n\treturn 1;\n}\n```\n\n### 04. [Programmer Kaioken x20](04.ProgrammerKaioken20.c)\nYou have grown SMARTER and have halved the run time by checking divisibility with odd-numbers only. You also understand that looping till 'x/2' is enough.\n\n``` ProgrammerKaioken20.c\nint prime_or_not(int x) {\n\tif (x == 2) {\n\t\treturn 1;\n\t}\n\n\tif (x % 2 == 0) {\n\t\treturn 0;\n\t}\n\n\tint i;\n\tfor (i = 3; i \u003c x/2; i += 2) {\n\t\tif (x % i == 0){\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\treturn 1;\n}\n```\n\n### 05. [Programmer Great Ape](05.ProgrammerGreatApe.c)\nYou want everyone to understand your code easily. So, you put some *REALLLLY* helpful comments. Runtime is cut from 'n/2' to 'n/3'.\n\n``` ProgrammerGreatApe.c\n/*\n * checks if a number is prime\n*/\nint prime_check(int n){\n\tif (n == 2){ // 2 is prime\n\t\treturn 1;\n\t}\n\n\tif (n % 2 == 0){ // if divisible by 2 then not prime\n\t\treturn 0;\n\t}\n\n\tint i = 3; // i is odd\n\tint lim = n/3;\n\tfor (; i \u003c lim; i += 2){ // check for all odd numbers till n/3\n\t\tif (n % i == 0){ // if divisible then not prime\n\t\t\treturn 0; // not prime\n\t\t}\n\t}\n\n\treturn 1; // is prime number\n}\n```\n\n### 06. [Pseudo Super Programmer](06.PseudoSuperProgrammer.cpp)\nNow, you understand- **mere comment cannot make bad code look good**. So, you get rid of those crappy names and annoying comments. And now, the code is truly readable.\n\n``` PseudoSuperProgrammer.cpp\nbool primeNumberChecker(int number){\n\n\tif (number == 2){\n\t\treturn true;\n\t}\n\n\tif (number % 2 == 0){\n\t\treturn false;\n\t}\n\n\tint limit = number/3;\n\tfor (int factor = 3; factor \u003c limit; factor += 2){\n\t\tif (number % factor == 0){\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n```\n\n### 07. [Super Programmer](07.SuperProgrammer.cpp)\nYou have improved time complexity from 'n' to '√n'! BRILLIANT!!! \u003cbr\u003e\nYou covered boundary cases too: no room for unreliable codes :) \u003cbr\u003e\n*Most importantly, who elite uses the tab?!*\n\n``` SuperProgrammer.cpp\n#include \u003cmath.h\u003e\n\nbool checkPrime(int number) {\n    if (number \u003c 2) {\n        return false;\n    }\n    if (number == 2) {\n        return true;\n    }\n    if (number % 2 == 0) {\n        return false;\n    }\n\n    int limit = sqrt(number);\n    for (int factor = 3; factor \u003c= limit; factor += 2) {\n        if (number % factor == 0) {\n            return false;\n        }\n    }\n\n    return true;\n}\n```\n\n### 08. [Super Programmer 2](08.SuperProgrammer2.cpp)\nYou have come up with a more clever solution for computing '√n'. In fact, you don't really need to calculate it! \u003cbr\u003e\n`2 == number`, instead of `number == 2`, can save you from lots of troubles caused by mistyping one `=` by giving a compilation error in place of an undetectable bug.\n\n``` SuperProgrammer2.cpp\nbool isPrime (int number) {\n    if (2 == number) {\n        return true;\n    }\n    if (2 \u003e number || 0 == number%2) {\n        return false;\n    }\n\n    for (int factor = 3; factor*factor \u003c= number; factor += 2) {\n        if (0 == number%factor) {\n            return false;\n        }\n    }\n\n    return true;\n}\n```\n\n### 09. [Super Programmer 3](09.SuperProgrammer3.cpp)\nAs we don't need to check divisibility by all even numbers after checking by 2, the same goes for 3. So now, we are checking divisibility by only the odd numbers that are not multiples of 3.\n\n``` SuperProgrammer3.cpp\nbool isPrime (int number) {\n    if (3 \u003e= number) {\n        if (2 \u003e number) {\n            return false;\n        }\n        return true;\n    }\n\n    if (0 == (number\u00261) || 0 == (number%3)) {\n        return false;\n    }\n\n    int factor = 5;\n    while (factor*factor \u003c= number) {\n        if (0 == number%factor) {\n            return false;\n        }\n        factor += 2;\n\n        if (0 == number%factor) {\n            return false;\n        }\n        factor += 4;\n    }\n\n    return true;\n}\n```\n\n### 10. [Golden-Programmer-Great-Ape](10.GoldenProgrammerGreatApe.cpp)\nYou simply got over-bored...\n\n``` GoldenProgrammerGreatApe.cpp\nbool isPrime(int N, int _=2){\n\treturn _*_\u003eN?1\u003cN:N%_\u0026\u0026isPrime(N,++_);\n}\n```\n\n### 11. [Super Programmer 4](11.SuperProgrammer4.java)\nu don't give a duck\n\n``` PrimeNumberChecker.java\npublic class PrimeNumberChecker {\n    public boolean isPrime(int n) {\n        return n\u003e1?!new String(new char[n]).matches(\".?|(..+?)\\\\1+\"):false;\n    }\n}\n```\n\n### 12. [Super Programmer God](12.SuperProgrammerGod.java)\nExecution time is more important than memory consumption. And if you can do some preprocessing, then you should. Thus for smaller integers, you have reduced the complexity from √n to 1.\n\n``` PrimeNumberChecker.java\npublic class PrimeNumberChecker {\n\n    public static final int MAX_MEMORY_SPACE = 64000000;\n    public static final int MIN_MEMORY_SPACE = 4;\n\n    private boolean[] primeNumberMarks;\n\n    public PrimeNumberChecker() {\n        this(MAX_MEMORY_SPACE);\n    }\n\n    public PrimeNumberChecker(int maxValue) {\n        if (MAX_MEMORY_SPACE \u003c maxValue) {\n            maxValue = MAX_MEMORY_SPACE;\n        } else if (MIN_MEMORY_SPACE \u003e maxValue) {\n            maxValue = MIN_MEMORY_SPACE;\n        }\n\n        this.primeNumberMarks = new boolean[maxValue+1];\n        markPrimeNumbers();\n    }\n\n    private void markPrimeNumbers() {\n        for (int i = 2; i \u003c primeNumberMarks.length; ++i) {\n            primeNumberMarks[i] = true;\n        }\n\n        for (int i = 2; i*i \u003c= primeNumberMarks.length; ++i) {\n            if (true == primeNumberMarks[i]) {\n                for (int j = i+i; j \u003c primeNumberMarks.length; j += i) {\n                    primeNumberMarks[j] = false;\n                }\n            }\n        }\n\n        return;\n    }\n\n    public boolean isPrime(int number) {\n        if (number \u003c 0) {\n            return false;\n        } else if (number \u003c primeNumberMarks.length) {\n            return primeNumberMarks[number];\n        } else {\n            return checkPrime(number);\n        }\n    }\n\n    private boolean checkPrime (int number) {\n        if (0 == (number%2) || 0 == (number%3)) {\n            return false;\n        }\n\n        int factor = 5;\n        while (factor*factor \u003c= number) {\n            if (0 == number%factor) {\n                return false;\n            }\n            factor += 2;\n\n            if (0 == number%factor) {\n                return false;\n            }\n            factor += 4;\n        }\n\n        return true;\n    }\n}\n```\n\n### 13. [Super Programmer God Blue](#)\n### 14. [Super Programmer Blue Kaioken](#)\n### 15. [Programmer Ultra Instinct](#)\n\n\n## License\n\u003ca rel=\"license\" href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg alt=\"MIT License\" src=\"https://cloud.githubusercontent.com/assets/5456665/18950087/fbe0681a-865f-11e6-9552-e59d038d5913.png\" width=\"60em\" height=auto/\u003e\u003c/a\u003e\u003cbr/\u003e\u003ca href=\"https://github.com/MinhasKamal/ProgrammerTransformation\"\u003eProgrammerTransformation\u003c/a\u003e is licensed under \u003ca rel=\"license\" href=\"https://opensource.org/licenses/MIT\"\u003eMIT License\u003c/a\u003e.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminhaskamal%2Fprogrammertransformation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminhaskamal%2Fprogrammertransformation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminhaskamal%2Fprogrammertransformation/lists"}