Где ошибка в коде? Программа пробегает по массиву и возвращает колличество простых чисел - C (СИ)
Формулировка задачи:
Где ошибка в коде??? Программа пробегает по массиву и возвращает колличество простых (2, 3, 5, 7 и тд.) чисел.
Смотрю в код и простоооооо не вижу, что тут плохо...
#include <stdio.h>
int prime(int a)
{
int i;
if (a == 2) {
return 1;
}
if (a == 0 || a == 1 || a % 2 == 0) {
return 0;
}
for(i = 3; i*i <= a && a%i; i+=2) {
return i*i > a;
}
}
int main() {
int n, j, temp;
int count = 0;
int array[100];
scanf("%d", &n);
for (j = 0; j < n; j++) {
scanf("%d", &array[j]);
}
for(j = 0; j < n; j++) {
temp = array[j];
if (prime(temp) > 0) {
count++;
}
}
printf("%d\n", count);
return 0;
}
Сам же ее и нашел. Может, кому пригодится...
#include <stdio.h>
int prime(int a)
{
int i;
if (a == 2) {
a = 1;
return a;
}
if (a == 0 || a == 1 || a % 2 == 0) {
a = 0;
return a;
}
for(i = 3; i*i <= a && a%i; i+=2) {
a = 1;
return a;
}
}
int main() {
int n, j, temp;
int count = 0;
int array[100];
scanf("%d", &n);
for (j = 0; j < n; j++) {
scanf("%d", &array[j]);
}
for(j = 0; j < n; j++) {
temp = array[j];
if (prime(temp) > 0) {
count++;
}
}
printf("%d\n", count);
return 0;
}Решение задачи: «Где ошибка в коде? Программа пробегает по массиву и возвращает колличество простых чисел»
textual
Листинг программы
#include<stdio.h>
#include <math.h>
int prime(int a)
{
int i;
if (a == 2)
return 1;
if (a == 0 || a == 1 || a % 2 == 0)
return 0;
for(i = 3; i*i <= a && a % i; i += 2)
;
return i*i > a;
}
int main (void)
{
int a;
printf("Input range:");
scanf("%d", &a);
printf("%d\n ", prime(a));
return 0;
}