怎么求小于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; }