2016-10-09 3 views
-3

программы: я должен сделать программу, которая отображает все простые числа от 1 до 100.Я не могу заставить этот код работать правильно. Дисплей простых чисел от 1 до 100

История: Я сделал программу, которая запрашивает у пользователя число, говорит ему, является ли это простое число, если это не так, программа отображает его факторы.

Путаница: Но я не могу понять, почему эта программа (дисплей премьер не от 1 до 100.) Обыкновение работать должным образом.

Любая помощь будет принята с благодарностью.

//pre-processor directives 
#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 

//global variables/declarations 
int factors=0; 
int checkifprime(int num); 

//main function - start 
int main() 
{ 
    //declaring loop variable 
    int c; 
    for (c=1;c<=100;c++) 
    { 
     if (c==1 ||c==2) 
     { 
      printf("\n%d is a prime number",c); 
     } 
     else 
     { 
      factors = 0; 
      printf("error "); 
      checkifprime(c); 
      printf("error "); 
      if (factors=0) 
      { 
       printf("\n%d is a prime number",&c); 
      } 
      else 
      { 
       printf("\n%d is NOT a prime number",&c); 
      } 
     } 
    } 

} 

int checkifprime(int num) 
{ 
    int i; 
    if (num>0 && num<2147483640) 
    { 
     i = num-1; 

     for (i;i>1;i--) 
     { 
      if (num%i==0) 
      { 
       factors=factors+1; 

       printf(" %d",i); 
      } 
     } 
    } 

    //program finished 
    getch(); 
    return 0; 
} 
+1

Решение, на каком языке оно написано, было бы хорошим началом. –

+2

_ «Я не могу понять» _ не является описанием проблемы. –

+2

является '1' простым числом? –

ответ

2

У вас была одна маленькая, но значительная опечатка. Если бы вы включили все предупреждения, вы поймали бы его, поэтому в следующий раз: включите все предупреждения, которые предлагает компилятор. После того, как немного дополнительной очистки, чтобы избавиться от Windows, только материал:

//pre-processor directives 
#include <stdio.h> 
#include <stdlib.h> 

//global variables/declarations 
int factors = 0; 
int checkifprime(int num); 

//main function - start 
int main() 
{ 
//declaring loop variable 
    int c; 
    puts("1 is NOT a prime number"); 
    for (c = 2; c <= 100; c++) { 
    if (c == 2 || c == 3) { 
     printf("%d is a prime number\n", c); 
    } else { 
     factors = 0; 
     checkifprime(c); 
     fputc('\n',stdout); 
     // you had a typo here "=" instead of "==" 
     if (factors == 0) { 
     printf("%d is a prime number\n", c); 
     } else { 
     printf("%d is NOT a prime number\n", c); 
     } 
    } 
    } 
    exit(EXIT_SUCCESS); 
} 

int checkifprime(int num) 
{ 
    int i; 
    if (num > 0 && num < 2147483640) { 
    for (i = num - 1; i > 1; i--) 
    { 
     if (num % i == 0) { 
     factors = factors + 1; 
     printf(" %d", i); 
     } 
    } 
    } 
//program finished 
    return 0; 
} 

Это еще не идеально, но по крайней мере это работает, и вы можете построить на нем.

+0

Большое спасибо ... Эти проклятые опечатки ... –

+0

Nope. Эта опечатка была не единственной проблемой .. все еще нужны ответы .. :( –

+0

Код, который я написал, работает и работает по назначению: он печатает, если это просто нет. Если у вас все еще есть проблемы, вы должны спросить явно с помощью описание вашей проблемы – deamentiaemundi

 Смежные вопросы

  • Нет связанных вопросов^_^