输入整数m,将所有大于1小于整数m的素数存入所指定的数组中(数组最多只存放100个素数,超过则提示“OVERFLOW”),输出各素数——若输入的m≤2,则提示“NO”,程序终止。注:素数(Prime Number),亦称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
输入格式:
输入一个非0的整数。
输出格式:
素数的输出格式为每个素数5列宽、右对齐、每行显示15个。
100
输出样例:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
53 59 61 67 71 73 79 83 89 97
输入样例:
568
输出样例:
OVERFLOW
输入样例:
1
输出样例:
NO
代码1:
#include <stdio.h>
#include <math.h>
int isprimer(int n)
{
int l;
for (l=2;l<=sqrt(n);l++)
if (n%l==0)
return 0;
return 1;
}
int main ()
{
int m,i,j=0,a[100];
scanf ("%d",&m);
if (m<=2)
printf ("NO\n");
else
for (i=2;i<m;i++)
{
if(isprimer(i))
{
if(j>=100)
{
printf ("OVERFLOW\n");
return 0;
}
a[j++]=i;
}
}
for (i=0;i<j;i++)
{
printf ("%5d",a[i]);
if ((i+1)%15==0)
printf ("\n");
}
}
答案代码 2:
#include <stdio.h>
int fun(int n, int a[]);
int main ()
{
int n,a[100];
int i,j,m;
scanf ("%d",&n);
if (n>2)
{
m = fun(n,a);
if (m == 0)
printf ("OVERFLOW");
else
{
for (j=0; j<m; j++)
{
printf ("%5d",a[j]);
if((j+1)%15==0)
printf ("\n");
}
}
}
else
printf ("NO");
return 0;
}
int fun(int n,int a[])
{
int i,j,l,flag;
l=0;
for(i=2; i<=n; i++)
{
flag=1;
for(j=2; j<i; j++) /*找出1~n之间的素数*/
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)/*将素数存入指针所指向的数组*/
{
a[l]=i;
l++;
}
}
if (l>100)
return 0;
else
return l;/*返回素数的个数*/
}