素数的一个小问题,求好方法,谢谢。
题目是这样的:从键盘输入正整数m和n,将m到n之间的所有素数存入数组s中,并将s中元素5个一行输出。
程序代码:# include <stdio.h>
# include <malloc.h>
int find(int ,int ); //函数的功能是找出这个区间里面素数的个数
int main (void)
{
int m , n;
int k = 0;
printf("输出你想求取的区间(m,n)中间空格隔开: ");
scanf ("%d %d", &m,&n);
int * s;
s = (int *)malloc(sizeof(int) * find(m,n)); //生成一个 存放 找到的 素数 的动态数组
for(int i = m; i<n; i++)
{
for(int j = 2 ; j<i ; j++)
{
if( i % j == 0)
{
break;
}
}
if(i == j)
{
*(s+k) = i;
k++;
}
}
for (int q = 0; q<find(m,n); q++) //按每行五个输出,这个方法感觉丑死了,像一些有for语句
{ //输出一些特定图形的方法感觉很神奇,就 是学不会~ TT
printf("%d ", *(s+q));
if((q+1) % 5 == 0 && q != 0)
{
printf("\n");
}
}
return 0;
}
int find(int m, int n)
{
int len = 0;
for(int i = m; i<n; i++)
{
for(int j = 2 ; j<i ; j++)
{
if( i % j == 0)
{
break;
}
}
if(i == j)
{
len ++;
}
}
return len;
}







谢谢啦,求好方法,求指教,感觉论坛的高手太多了,望其项背呀(可能连背都望不到啊!),啥时候能进步~~~~


