חזור לתיקייה: בוחן אמצע

q2

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה

    q2

    02340114

    מבוא למדמח מ

    רשימות הרצאה לקריאה בשבת

    q2

    הופק מתוך תקיית התואר של שקד

    uni-folder.vercel.app

    q2.c

    הערה (קובץ קוד)

    קובץ זה הוא קובץ קוד מסוג C.

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    #define DONT_KNOW "I_dont_know"
    #define BASE_POWER 2
    #define STARTING_INDEX 2
    
    void printIDontKnow()
    {
        printf("%s", DONT_KNOW);
        exit(0);
    }
    
    int midterm_quiz_q2(long long n);
    
    //Uncomment the first line in main if you don't know the answer.
    //Otherwise, do not change main!!!
    int main()
    {
        // printIDontKnow();
    
        long long n;
        if (scanf("%lld", &n) != 1)
        {
            return 1;
        }
        printf("%d", midterm_quiz_q2(n));
        return 0;
    }
    
    /*
     * this function gets a number and returns if it has dividers different from 1
     *  and itself.
     * input:
     *  1. int num: the number to be checked.
     * output(bool):
     *  true if the number has dividers.
     */
    bool hasDividers(int num)
    {
        bool isDividers = false;
    
        for (int i = 2; i < num; i++)
        {
            double temp = (double)num / i;
            if (((int)temp) == temp)
            {
                isDividers = true;
            }
        }
    
        return isDividers;
    }
    
    long long power(int base, int exponent)
    {
        long long result = base;
    
        for (int i = 1; i < exponent; i++)
        {
            result *= base;
        }
    
        return result;
    }
    
    int midterm_quiz_q2(long long n)
    {
        int numberOfNumbers = 0, i = STARTING_INDEX + 1;
        long long current = power(BASE_POWER, STARTING_INDEX) - 1;
    
        while (current <= n)
        {
            if (!hasDividers(current))
            {
                numberOfNumbers++;
            }
    
            current = power(BASE_POWER, i) - 1;
            i++;
        }
    
        return numberOfNumbers;
    }