[英]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.