내 프로그램의 목적은 사용자 입력으로 표시된 소수를 찾는 것입니다. 나는 그것을 발견 할 때 소수를 저장하기 위해 배열을 설정했다. p (테스트중인 정수)가 증가하고 테스트가 다시 시작되면 배열 내의 요소로 나누어 처리가 저장됩니다. 44030 번째가 될 때까지 잘 작동합니다. 나는 GCC를 사용하여 컴파일하고있다. 왜 내가 세그먼트 오류를주는거야? 당신은 cap
바이트보다는 당신의 malloc()
호출 cap*sizeof(long)
바이트를 할당하는조건부 세그먼트 화 오류
//Prime Finder
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=4;
int p=7;
int j=1;
int cap;
printf("\nWhich prime number would you like to see? ");
scanf("%i",&cap);
long *array=malloc(cap);
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=5;
while(i<=cap)
{
if (array[j]>=p/2) // if true then p is prime
{
j=1;
array[i]=p;
p++;
i++;
}
else if (p%array[j]==0) // if true then p is not prime
{
p++;
j=1;
}
else // in this case p is still under test
j++;
}
printf("\nHere it is! %i\n\n",array[cap]);
return 0;
}
특정 소수는 단지 int의 저장 길이를 초과 할 수 있습니까? (어떤 지식으로도 방해받지 말고 답하십시오) – SchmitzIT
나는 그렇게 생각하지 않습니다. Int는 2,147,483,647까지 좋습니다. 44030 번째 소수는 532691입니다. – bobweek
좋아요, 걱정할 필요가 없습니다. 그냥 생각 이었어 :) – SchmitzIT