프로그램이 있습니다. 첫째, 사용자가 입력 한 범위에서 소수를 찾습니다. 그런 다음이 소수 +1 (기본적으로 제르맹 소수를 찾습니다)의 2 배 소수를 확인합니다. 제르맹 프라임을 직접 인쇄하고 싶을 때 작동합니다. 그러나 이러한 값을 배열에 할당하고 인쇄하려고하면 첫 번째 값만 인쇄됩니다. 내 코드는 다음과 같습니다.
#include <stdio.h>
#define MAX 100
int main(){
int x, y, i, ii, j, k, m, storage[MAX], counter=0, counter2=0;
printf("Please enter the X and Y values:\a\n");
scanf("%d %d",&x,&y);
for(i=x;i<=y;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0){
counter++;
}
}
if (counter==0){
//printf("%d is a prime number\n",i);
for(k=2;k<(2*i+1);k++)
{
if((2*i+1)%k==0){
counter2++;
}
}
}
if (counter2==0){
printf("%d is a germain prime\n",i);
}
for(ii=0; ii<=i; ii++)
{
scanf("%d",&storage[ii]);
//printf("%d", storage[ii]);
}
}
counter2=0;
counter=0;
return 0;
}
당신은 초기화 할 필요가 counter
와 counter2
에 0
메인 루프를 통해 때마다.
storage
다음 germain 번호에 대한 배열에 색인을 보유하려면 다른 변수가 필요합니다 . 그런 다음 germain 번호를 찾으면 배열 요소에 할당하고이 변수를 증가시킵니다.
숫자가 제르맹 소수인지 여부에 대한 테스트는 그것이 소수라는 조건부 안에 있어야합니다.
#include <stdio.h>
#define MAX 100
int main(){
int x, y, i, ii, j, k, m, storage[MAX], s_index = 0;
printf("Please enter the X and Y values:\a\n");
scanf("%d %d",&x,&y);
for(i=x;i<=y;i++)
{
int counter = 0, counter2 = 0;
for(j=2;j<i;j++)
{
if(i%j==0){
counter++;
}
}
if (s_index < MAX && counter==0){
//printf("%d is a prime number\n",i);
for(k=2;k<(2*i+1);k++)
{
if((2*i+1)%k==0){
counter2++;
}
}
if (counter2==0){
//printf("%d is a germain prime\n",i);
storage[s_index++] = i;
}
}
}
for(ii=0; ii<s_index; ii++)
{
printf("%d\n", storage[ii]);
}
return 0;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다