Лаба №2. Функции в языке С [Вариант 4]

Вариант: 
4
Решение
/*
Волк А.В. гр 720603 Вариант №4 
Напечатать все простые числа, не превосходящие заданное число M.
Для ускорения вычислений полезно завести таблицу для уже найденных простых чисел и проверять делимость 
очередного числа на числа из этой таблицы. Четные числа, естественно, не рассматривать. 
Таблица понадобится менее чем на  Решение задачи оформит в виде функции, которая получает в качестве 
параметров число M, указатель на массив, в который будут помещаться найденные простые числа.
*/
 
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h> 
#include <malloc.h> 
 
int Check(int x){
int ok=1;
if(x>1000000){
ok=0;
puts("Too Much!");
}
   if(x<2){
     ok=0;
       puts("Must be more than 1!");
}
return ok;
}
 
int CheckInt(char *x)
{
int symbols = 0;
int digits = 0;
int ok=0;
while(*x !=0){
symbols++;
if(isdigit(*x++))
digits++;
}
if(symbols==digits)
ok=1;
 
if(symbols>7){
            puts("Symbols there is more than possible");
ok=0;
}
 
return ok;
}
 
/****************************************
//функция для нахождения простого числа
/******************************************/
int *Prime(int n){
int i,x,c,a;
int *s;
int k=n;
 
s = (int) *calloc(k, sizeof(s));
s = (int *) calloc(k, sizeof(s));
if(!s){
puts("The file is empty. Probably not enough memory. Try again.");
        return 0;
}
else{
s[0]=2;
x=3;
for (i=1; i<=k; ++i){
if(!s[i]){
c=i;
break;
}
}
while (x<=n){
//a=0;
for (a=i=0;i<c;i++)
if (!(x%s[i]))
break;
else
a++;
if (a==c)
{
s[c]=x;
c++;
}
x+=2;
}
 
return s;
free (s);
}
}
 
 
void main()
{
char m[];
    int i=0,n=0,ok;
int *s;
puts("Enter number!");
do {
do {
ok=1;
gets(m);
            if(!CheckInt(m)){
ok=0;
puts("Incorrect input. Try again.");
continue;
}
            n=atoi(m);
if(!Check(n)){
ok=0;
puts("Incorrect input. Try again.");
continue;
}
} while (!ok);
s=Prime(n);
} while(!s);
 
puts("Prime numbers:");
 
while (s[i]>0) //вывод таблицы
printf("%d ", s[i++]);
//i++;
 
printf("\nQuanity of prime numbers: %d\n",i);
getch();
}
 
Файл с решением: 
Задание

Напечатать все простые числа, не превосходящие заданное число M. Для ускорения вычислений полезно завести таблицу для уже найденных простых чисел и проверять делимость очередного числа на числа из этой таблицы. Четные числа, естественно, не рассматривать. Таблица понадобится менее чем на
Решение задачи оформит в виде функции, которая получает в качестве параметров число M, указатель на массив, в который будут помещаться найденные простые числа.