簡體   English   中英

如何修復浮點異常:C 代碼中的 8

[英]How to fix Floating point exception: 8 in C code

我正在嘗試編寫一個程序,列出給定參數中的所有素數。 我的終端不會輸出任何內容,即使我在程序末尾有打印功能。

您能否也讓我知道 x 和 g 變量是否必要,或者我是否可以堅持使用 i.

這是我的代碼:

#include <stdio.h>

#define MAX_SIZE 1000
int main(){

    int N , i, x, g, a[MAX_SIZE];

    scanf("%d", &N);

    a[0] = 2;

    for (i = 1; i < N - 2; i++)
    {
        a[i] = (a[i-1]) + 1;
    }

    for (x = 0; x < N - 2; x++){
        for (i = 1; i < N - 2; i++){
            if (a[i] % a[x] == 0) {
                for (g = i; g < N - 2; g++){
                    a[g] = a[g+1];
                }
            }
        }
    }


    for (i = 0; i < N - 2; i++){
        printf("%d \n", a[i]);
    }

   return 0;
}

你在這里有一個錯誤:

for (g = i; g < N - 2; g++){
  a[g] = a[g+1];

}

g = N - 2 - 1 ,使用值a[N - 2] ,但元素未初始化且值不確定。

您應該檢查並修復您的算法,以免讀取未初始化的元素。


你的代碼對我來說看起來太復雜了。 這是我的代碼示例,用於打印N或更少的所有素數:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int N;
    int* primes;
    int prime_count;
    int i, j;
    if (scanf("%d", &N) != 1) return 1;
    primes = malloc(sizeof(*primes) * N);
    if (primes == NULL) return 2;

    prime_count = 0;
    for (i = 2; i <= N; i++) {
        int is_prime = 1;
        for (j = 0; j < prime_count; j++) {
            if (i % primes[j] == 0) {
                is_prime = 0;
                break;
            }
        }
        if (is_prime) primes[prime_count++] = i;
    }

    for (i = 0; i < prime_count; i++) {
        printf("%d\n", primes[i]);
    }

    free(primes);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM