编程,输入n,再输入n个正整数,输出其中的素数。要求定义和调用函数prime(m)判断m是否素数。

如题所述

#include<stdio.h>
int prime(int m)
{
int i=2;
do
{
if( (m/i)!=1) //条件不成立
i++;
else
retrun m;
}while(i>(m-1));
}
main()
{
int i,j,n,a[100];
printf("How many numbers will you input:");
scanf("%2d",&n);
printf("please input %d numbers:",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("其中是素数的有:\n");
printf(" ");
for(i=0;i<n;i++)
{
j=prime(a[i]);
printf("%d ",j);
}
}追问

程序最后输出的时候不是素数,而是一些很随便的数

追答

不好意思,以上的代码是我用手机编写的没有经过验证就发布了,很抱歉!
下面是我借别人电脑编写的代码,已经通过验证:
#include
//判断素数
int fun(int n)
{
int i,j;
if(n==1||n==2)
return n;
for(i=2;i<n;i++)
{
j=(int)(n/i);
if(n==i*j)
break;
if(n!=i*j)
if(i==(n-1))
return n;
}
return 0;
}
/*判断0和1*/
void SH(int n)
{
if(n!=0)
printf("%5d",n);
}
main()
{
int a[1000],i,j,n;
printf("How many numbers will you input:\n");
scanf("%d",&n);
printf("The %d's numbers are:\n\n",n);
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
}
if(n%2==0)
{
for(j=0;j<(n/2);j++)
printf("a[%d]=%d a[%d]=%d\n",j,a[j],j+(n/2),a[j+(n/2)]);
}
else
{
for(j=0;j<(n/2);j++)
printf("a[%d]=%d a[%d]=%d\n",j,a[j],j+(n/2),a[j+(n/2)]);
printf("a[%d]=%d\n\n",n-1,a[n-1]);
}
printf("其中素数有:\n\n\n");
for(i=0;i<n;i++)
{
j=i;
SH(fun(a[j]));
}
printf("\n");

}

温馨提示:答案为网友推荐,仅供参考
相似回答