سوال چالشی رمزهای جان سخت در زبان c - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سوال چالشی رمزهای جان سخت در زبان c

0 امتیاز
یک رمز n رقمی جان سخت است اگر عددی اول باشد و اگر از سمت راست آن شروع به ارقام آن بکنیم همواره عدد باقی مانده نیز عددی اول باشد. مثلا رمز 2399 یک رمز جان سخت است زیرا اعداد 2399 و 239 و 23 و 2 همگی اول هستند. همچنین عدد 3137 نیز همینطور است.
برنامه ای بنویسید که عدد n را بگیرد و تمام رمزهای جان سخت به طول n را چاپ کند. دقت کنید که عدد 1 عدد اول نیست.
ورودی:
یک خط شامل عدد n که n از 1 تا 8 است.
خروجی:
رمزهای جان سخت به طول n که به صورت صعودی مرتب شده اند و همچنین در هر خط یک عدد وجود دارد.
مثال:
ورودی:
3
خروجی:
233
239
293
311
313
317
373
379
593
599
719
733
739
797
خیلی ممنونم. می توانید از آرایه ها و توابع استفاده کنید ولی از کتابخانه <string.h> استفاده نکنید.
سوال شده آذر 21, 1399  بوسیله ی aliakbar (امتیاز 24)   4 7 9

1 پاسخ

0 امتیاز

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

// Function to check if a number is prime or not
bool CheckPrime(int num)
{
    if (num == 0 || num == 1)
        return false;
    for (int i = 2; i < num; i++)
    {
        if (num % i == 0)
        {
            return false;
        }
    }
    return true;
}


int main()
{
    printf("Input a number(1 to 8) : ");
    int n;
    scanf("%d", &n);

    printf("Diehard numbers : ");
    for (int i = (int)pow(10, n - 1); i < (int)pow(10, n); i++)
    {
        bool IsPrime = false;
        int temp = i;
        while (temp > 0)
        {
            IsPrime = CheckPrime(temp);
            if (!IsPrime)
            {
                break;
            }
            temp = temp / 10;
        }
        if (IsPrime)
        {
            printf("%d\n", i);
        }
    }

    return 0;
}

پاسخ داده شده اسفند 20 بوسیله ی ik (امتیاز 571)   1 2 8
...