Требуется переписать код программы с C++ на C. Если вкратце, то программа в числовом квадратном массиве строит “спираль Улама” следующим образом: начиная с центрального элемента по спирали против часовой стрелки, массив заполняется натуральными числами от 1 до N^2. Требуется определить количество простых чисел в массиве, а также вывести массив на экран, причем если элемент есть простое число, то вывести звездочку (*), иначе точку (.).
| Код | #include <stdio.h> #include <conio.h> #define n 3
int IsPrime(int x); void Create(int **a); void print(int **a, int ind=0);
int main() { printf("-----------------------\n"); int **a; a=new int *[n]; for(int i=0; i<n; ++i) a[i] = new int [n]; Create(a); print(a); printf("-------------\n"); print(a,1); getch(); return 0; }
int IsPrime(int x) { if (x==1) return 0; for(int i=2; i<x/2; i++) if (x%i==0) return 0; return 1; }
void Create(int **a) { int l=1; for (int i=n/2; i<n; i++) { int j; for (j=0; j<2*i-n+1; j++) a[i-j][i]=l++; for (j=0; j<2*i-n+1; j++) a[n-i-1][i-j]=l++; for (j=0; j<2*i+2-n; j++) a[n-i+j-1][n-i-1]=l++; if (i<n-1) for (j=0; j<i*2+2-n; j++) a[i+1][n-i+j-1]=l++; } }
void print(int **a, int ind) { for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (ind==0) printf("%3d",a[i][j]); else { char ch = (IsPrime(a[i][j])==0?'.':'*'); printf("%3c",ch); } } puts(""); } }
|
|