计算二维数组中完数和素数的和,二维数组定义:int arr[] [4]={6,33,22,28,46,4,6,9,89};
循环数组 int LoopArr(int (*p)[4],int line,int row) 返回素数和完数的和
完数 int Perfect(int num)
素数 int Prime(int num)
#include <stdio.h>
#include <string.h>
int Prime(int num)
{
int i,count=0;
for(i=1;i<=num;i++)
{
if(num%i==0)
{
count++;
}
}
return count;
}
int Perfect(int num)
{
int i,sum=0;
for(i=1;i<num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
return sum;
}
int LoopArr(int (*p)[4],int line,int row)
{
int i,j;
int sumw,sumw1=0;
int sums,sums1=0;
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
int sumw=Perfect(*(*p+i)+j);
if(sumw==*(*(p+i)+j))
{
sumw1+=*(*(p+i)+j);
}
int sums=Prime(*(*p+i)+j);
if(sums==2)
{
sums1+=*(*(p+i)+j);
}
}
}
return sumw1+sums1;
}
int main(int argc, const char *argv[])
{
int arr[][4]={6,33,22,28,46,4,6,9,89};
int line=sizeof(arr)/sizeof(arr[0]);
int row=sizeof(arr[0])/sizeof(arr[0][0]);
int sum=LoopArr(arr,line,row);
printf("完数和素数的和是:%d\n",sum);
return 0;
}
结果:
