具有n×n方阵以计算素数元素C的总和

时间:2015-05-15 12:29:48

标签: c matrix

我有这个“有一个n乘方形矩阵计算主对角线上所有主要元素的总和”。

我试过了:

#include<stdio.h>

int main(){

  int a[10][10],i,j,sum=0,m,n;

  printf("\nEnter rows and columns: ");
  scanf("%d %d",&m,&n);

  printf("\nEnter elements: ");
  for(i=0;i<m;i++)
      for(j=0;j<n;j++)
           scanf("%d",&a[i][j]);
  printf("\nThe matrix is\n");

  for(i=0;i<m;i++){
      printf("\n");
      for(j=0;j<m;j++){
      printf("%d\t",a[i][j]);
      }
 }
 for(i=0;i<m;i++){
     for(j=0;j<n;j++){
          if(i==j)
              sum=sum+a[i][j];
     }
 }
 printf("\n\nSum of the diagonal elements: %d",sum);

 return 0;
}

如果没问题,如何计算主对角线上所有 prime 元素的总和? 谢谢!

1 个答案:

答案 0 :(得分:1)

你应该检查对角元素是否为素数。为此你应该写一个单独的函数。

for(i=0;i<m;i++){
 for(j=0;j<n;j++){
      if(i==j && isprime(a[i][j]))
          sum=sum+a[i][j];
 }
}

int isprime(int a)
{
    for(int i=2;i<=a/2;i++)
       if(a%i==0)
          return 0;
    return 1;
}
//note that you can optimize the above loop by running it till sqrt(a)