当前位置: 代码迷 >> 综合 >> 1960: 找出矩阵中的素数(函数实现)
  详细解决方案

1960: 找出矩阵中的素数(函数实现)

热度:100   发布时间:2023-11-21 14:13:23.0

问题:

1960: 找出矩阵中的素数
时间限制: 1 Sec 内存限制: 128 MB
提交: 224 解决: 76
[提交][状态][讨论版][命题人:171530239]
题目描述
给出一个 33 的矩阵,找出矩阵中的所有素数,并按从小到大顺序输出它们。
输入
一个 3
3 的矩阵
输出
从小大到输出矩阵中的所有素数,用空格分开。
如果没有素数,输出"No answer"
样例输入
1 2 3
4 5 6
7 8 9
样例输出
2 3 5 7
来源

问题分析:

素数判断 ,控制输出即可

代码如下:

#include <stdio.h>
#include "math.h"
int sushu(int m)//判断素数函数,不过无法判断出1,所以要控制输出
{
    int k,leap=0;for(k=2;k<sqrt(m+1);k++){
    if(m%k==0)leap=1;}return leap;
}
void paixu(int a[],int n)//函数实现排序和输出
{
    int i,j,t;for(i=0;i<n;i++){
    for(j=0;j<n-1-i;j++){
    if(a[j]>a[j+1]){
    t=a[j];a[j]=a[j+1];a[j+1]=t;}}}for(i=0;i<n;i++){
    if(a[i]!=1)printf("%d ",a[i]);}printf("\n");
}
int main()
{
    int n=3,a[10][10],b[100];int i=0,j=0,t,p=0;for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    scanf("%d",&a[i][j]);//输入判断存储t=sushu(a[i][j]);if(t==0)b[p++]=a[i][j];}}if(p==0)printf("No answer\n");elsepaixu(b,p);return 0;
}

总结

 注意两点:一是没有素数时情况:下标p==0;二是输出时对 1 的剔除。