问题:
1960: 找出矩阵中的素数
时间限制: 1 Sec 内存限制: 128 MB
提交: 224 解决: 76
[提交][状态][讨论版][命题人:171530239]
题目描述
给出一个 33 的矩阵,找出矩阵中的所有素数,并按从小到大顺序输出它们。
输入
一个 33 的矩阵
输出
从小大到输出矩阵中的所有素数,用空格分开。
如果没有素数,输出"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 的剔除。