我有这个“有一个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 元素的总和? 谢谢!
答案 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)