2016-12-04 12 views
1

Iは1と入力値との間のすべての素数を印刷するには、このコードを書かれている:Cの出力から最後のカンマ(、)を省略するにはどうすればよいですか?

#include <stdio.h> 
#include <conio.h> 

int main() 
{ 
//Declaration of variables: 
    int N, i, j, isPrime, n; 

// Ask user for input the upper limit for the generation of primes (N) 
printf("Enter the value of N\n"); 
scanf("%d",&N); 

if (N==1){ 
    printf("There are no prime numbers before 1. Please recompile. \n"); //print out an error if 
    // 1 is inputted as the upper limit for the generation of primes. 
} 

/* For every number between 2 to N, check whether it is prime number or not */ 

else 
    printf("The primes between 1 and %d are: ", N); 

for(i = 2; i <= N; i++){ 
    isPrime = 0; 

     /* Check whether i is prime or not */ 
     for(j = 2; j <= i/2; j++){ 

     /* Check If any number between 2 to i/2 divides I completely If it divides, the numebr cannot be a prime. */ 

      if(i % j == 0){ 
       isPrime = 1; 
       break; 
      } 
     } 

     // print out the primes if the conditions are met 

    if(isPrime == 0 && N != 1) 
     printf("%d, ", i); 
} 

return 0; 
} 

それは素晴らしい作品が、私は最後のものを含め、各値の後にカンマを取得します。最後のカンマからちょうど表示されないようにカンマを削除したいと思います。

は事前にありがとうございました。

ベスト。コメントがあり、それが最後の一つであるループの反復を決定するために幾分困難であるように、一代わり後出力前出力をコンマを入れることができ、次のように最初のカンマを省略

+2

、その後、*先頭追加*コンマの代わりに*追加*それは – StoryTeller

+0

'printfの( "%dの、"、i)は'すべての番号の後にコンマを書き込みます。それを変更する必要があります。紙の上にリストを書いて、それをプログラムコードに変換しようとするときに、あなたが何をするかを考えてください。 –

+1

'2'が素数であることを知っていれば、計算からスキップして' 2'を出力し、その後にカンマ*の前にカンマ*(@StoryTellerに似たoops)を出力することができます。 –

答えて

2

、簡潔にするために削除されました。最初の '2'を印刷して

int isFistIteraion = 0; 
for(i = 2; i <= N; i++) 
{ 
    isPrime = 0; 
    for(j = 2; j <= i/2; j++){ 
     if(i % j == 0){ 
      isPrime = 1; 
      break; 
     } 
    } 
    if(IsPrime == 0 && N != 1){ 
     if (0 == isFirstIteration){ 
      isFirstIteraion = 1; 
      printf("%d", i); 
     } else { 
      printf(", %d", i); 
     } 
    } 
} 
関連する問題