脑袋困掉惹 2021-05-15 09:14 采纳率: 100%
浏览 315
已采纳

有一道c++的编程题 有大神会嘛

【题目】编写程序,将4×4矩阵包括主对角线在内的右上三角区域内的数组元素做如 下判断和变换:如果该数是素数则用大于该数的最小素数替换;否则保持原数不变,同时 统计包括主对角线在内的右上三角区域内的元素中素数的个数 程序的输出结果为: 变换前的数组a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 变换后的数组a 1 3 5 4 5 6 11 8 9 10 13 12 13 14 15 16 素数个数:4

  • 写回答

4条回答 默认 最新

  • qfl_sdu 2021-05-15 11:21
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <string>
    //判断是否是素数
    bool isSushu(int n)
    {
    	if(n <2) return false;
    	for (int i = 2; i < n; i++)
    	{
    		if (n %i == 0)
    		{
    			return false;
    		}
    	}
    	return true;
    }
    
    //求大于n的最小素数
    int sushu(int n)
    {
    	int d = n+1;
    	while(true)
    	{
    		int i = 2;
    		for (; i < d; i++)
    		{
    			if (d %i == 0)
    			{
    				d++;
    				break;
    			}
    		}
    		if (i == d)
    		{
    			return d;
    		}
    	}
    }
    
    
    int main()
    {
    	int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    	for (int i = 0; i < 4;i++)
    	{
    		for(int j = i; j < 4; j++)
    		{
    			if (isSushu(a[i][j]))
    			{
    				a[i][j] = sushu(a[i][j]);
    			}
    		}
    	}
    
    	for (int i =0; i < 4;i++)
    	{
    		for (int j = 0; j < 4;j++)
    		{
    			printf("%d ",a[i][j]);
    		}
    		printf("\n");
    	}
    	
    	getchar();
    	getchar();
    	return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?