Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số Nguyên n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.

Wednesday, August 27, 2014
Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số Nguyên n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.
code

#include <stdio.h>
#include <conio.h>
int ktsnt(unsigned long n)
{
    unsigned long i;
       if (n==0 || n==1) return 0;
       for (i=2;i*i<=n;i++) if (n%i==0) return 0;
       return 1;    
}
int ktsht(unsigned long n)
{
    unsigned long i,k=0;
       for (i=2;i<n;i++) if(n%i==0)
       {
              k+=i;
              if(k>n) return 0;
       }
       if (n==k) return 1; else return 0;
}
void docdl(unsigned long a[][50],int *n,int *m)
{
       int i,j;
       FILE *u;
       u=fopen("c:\\input.txt","rt");
       fscanf(u,"%d%d",&*n,&*m);
       for (i=0;i<*n;i++)
              for (j=0;j<*m;j++)
              fscanf(u,"%lu",&a[i][j]);
       fclose(u);
}
void xemmang1(unsigned long a[],unsigned long n)
{
       unsigned long i;
       printf("\n"); 
       for (i=0;i<n;i++)
              printf("  %lu  ",a[i]);
       printf("\n");
}

void xemmang2(unsigned long a[][50],int n,int m)
{
    int i,j;
       printf("\n");
    for (i=0;i<n;i++)
    {
       for (j=0;j<m;j++)
       printf("  %lu  ",a[i][j]);
       printf("\n");
    }
       printf("\n");
}
void xuly(unsigned long a[][50],int n,int m,unsigned long b[],unsigned long *demnt,unsigned long c[],unsigned long *demht)
{
    int i,j;
    for (i=0;i<n;i++)
    {
       for (j=0;j<m;j++)
          {
                 if (ktsnt(a[i][j]))
                 {
                        b[*demnt]=a[i][j];
                        *demnt = *demnt + 1;
                 }
                 if (ktsht(a[i][j]))
                 {
                        b[*demht]=a[i][j];
                        *demht= *demht + 1;
                 }
          }
    }
}
void main()
{
       unsigned long a[50][50],      // mang luu du lieu doc tu tep.
                     b[2500],demnt=0,// mang luu so nguyen to.
                     c[2500],demht=0;// mang luu so hoan thien.
       int m=0,n=0;
       docdl(a,&n,&m);
       xemmang2(a,n,m);
       xuly(a,n,m,b,&demnt,c,&demht);
       printf("\n Mang nguyen to dc tao la");
       xemmang1(b,demnt);
       printf("\n Mang so hoan thien dc tao la");
       xemmang1(c,demht);
       printf("\nHoan Tat ");
       getch();
}



Chia sẻ bài viết ^^
Other post

All comments [ 0 ]


Your comments