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

问题:

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");
    else
        paixu(b,p);
    return 0;
}

总结

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

猜你喜欢

转载自blog.csdn.net/qq_51907130/article/details/111514857