题目:
代码:
#include<stdio.h> #include<math.h> //素数的判定方法 bool ss(int num) { if (num <= 1) { return false; } if (num == 2) { return true; } for (int i = 2; i < num; i++) { if (num % i == 0) { return false; } } return true; } //对目标素数的转变 int bian_huan(int num ,int p[]) { for (int i = 0;true;i++) { if (p[i] == num) { return p[i + 1]; } } } int main() { int i, j, k = 0; int a[4][4] = { {3,6,4,17},{8,5,9,10 },{9,19,7,20},{4,14,21,23} };//定义目标数组 int b[10] = { 2,3,5,7,11,13,17,19,23,29 };//素数数组 //遍历下三角数组,实行素数升级变换 for (i = 0; i < 4; i++) { for (j = 0; j <= i; j++) { if (ss(a[i][j])) { a[i][j]=bian_huan(a[i][j], b); k++; } else { a[i][j] = 0; } } } //打印更新后的数组表 for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%2d ",a[i][j]); } printf("\n"); } printf("count=%d", k); }
运行效果:
补充:对素数的判断,网上有好几种办法,都是可以做到的,此方法并不唯一。
对于题目中素数的判断后的变换,采用的是建立素数数组,然后让目标素数后移一位的形式实现的。