Nhờ check hộ đoạn code liệt kê số lượng số thoả mãn là số nguyên tố và tổng chữ số của nó là một số trong dãy Fibonacci

Một số được coi là đẹp nếu nó là số nguyên tố và tổng chữ số là một số trong dãy Fibonaci. Viết chương trình liệt kê trong một đoạn giữa hai số nguyên cho trước có bao nhiêu số đẹp như vậy

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

int fib[9];

int fibo(int n) {
    if(n==1 || n==2) return 1;
    if(fib[n]) return fib[n];
    fib[n] = fibo(n-1) +fibo(n-2);
    return fib[n];
}

int checkNt(int n) {
    if( (n>2 && n%2==0) || n<2) return 0;
    int i;
    for(i=3; i<=sqrt(n); ++i) {
        if(n%i==0) return 0;
    }
    return 1;
}

int main() {
    fib[1]=1;
    fib[2]=1;
    fibo(9);
    int a, b, max, min, i, j;
    scanf("%d %d",&a,&b);
    max = a<b?b:a;
    min = a<b?a:b;
    for(i=min; i<=max; i++) {
        int sum=0;
        int temp = i;
        if(checkNt(temp)) {
            while(temp>0) {
                sum+=(temp%10);
                temp /= 10;
            }
            for(j=1; j<10; ++j) {
                if(sum==fib[j]) {
                    printf("%d ", i);
                    break;
                }
            }
        }
    }
    return 0;
}

code em ra kqua đúng nhưng nộp bài ko được, mng check xem em còn thiếu xót gì không ạ

  1. Bạn nộp bài thì báo gì?
  2. Sao chỉ có 9 phần tử (34) thôi vậy? Ít nhất cũng phải đến phần tử thứ 11 (89 nếu là int) hoặc 13 (233 nếu là long) chứ.
  3. Bạn có chắc dãy fibo tạo ra đã đúng? Bạn đang “mượn” hàm tính số fibo thứ n để tính cho mảng. Dư thừa. Bạn có thể tính từng phần tử của mảng qua 1 vòng lặp được mà.

Vẫn liên quan đến giá trị rác của mảng, mong bạn để ý.

3 Likes

à đề bài cho thêm 2 số nguyên nhỏ hơn 1000 nữa

Một số được coi là đẹp nếu nó là số nguyên tố và tổng chữ số là một số trong dãy Fibonaci. Viết chương trình liệt kê trong một đoạn giữa hai số nguyên cho trước có bao nhiêu số đẹp như vậy

Input

Chỉ có một dòng ghi hai số nguyên dương a,b (a có thể lớn hơn b) không quá 1000.

Output

Ghi ra các số thỏa mãn trên một dòng, cách nhau một khoảng trống.

nguyên văn đề bài đây ạ

1 Like

Số nhỏ hơn 1000 thì tổng chữ số ko quá 27, liệt kê sẵn cho gọn :slight_smile: 1 2 3 5 8 13 21 (mà số lớn mấy cũng chỉ cần liệt kê thôi :smiley: )
Phạm vi đến long thì bước kiểm tra nguyên tố thành ra lâu nhất.

3 Likes

nma code kia em nộp thì báo sai kết quả. em vânx ko hiểu sai chỗ nào

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?