怎么求小于m的最大的k个素数 ,还需要正序输出。
#include<stdio.h>main()
{
int i,k,m,n;
scanf("%d %d",&m,&k);
for(n=0,m=m-1;n<k;m--)
{for(i=2;i<m;i++)
{if(m%i==0)break;
}
if(i==m)
{printf("%d ",m);n++;
}
}
}
倒着输出我会,可将数据正序输出就不会了。
程序代码:#include <math.h>
#include <stdio.h>
int Judge(int n)
{
for (int i = 2; i <= (int)sqrt(double(n)); ++i)
if (n % i == 0) return 1;
return 0;
}
void test1(int m, int k)
{
int i, a[20];
for (i = 0; i < k && m > 2; ++i)
while(Judge(a[i] = --m));
for (--i; i >= 0; --i)
printf("%d ", a[i]);
}
void test2(int m, int k)
{
if (!k || m <= 2) return;
while(Judge(--m));
test2(m, k-1);
printf("%d ", m);
}
int main()
{
test1(1000, 20);puts("");
test2(1000, 20);puts("");
return 0;
}