编写函数实现将小于整数x的最近k个质数存入数组中,若没有k个,则将小于整数x的所有质数存入数组中。在main函数中验证。要求:整数x和k均在main函数中由键盘输入。
#include <stdio.h>
void fun(int m, int k, int xx[])
{
int i,j,t = m+1,flag;
j = 0;
while(j < k)
{
flag = 0;
for(i = 2; i*i <= t; ++i)
{
if(t%i == 0)
{
flag = 1;
break;
}
}
if(flag == 0)
xx[j++] = t;
t++;
}
}
void main()
{
int m,k,i;
scanf("%d%d",&m,&k);
int xx[20];
fun(m,k,xx);
for(i = 0; i < k; ++i)
printf("%d ",xx[i]);
}
代码如上,万望采纳。
#include <stdio.h>
int isprime( int n);
int main()
{
int x,k,i;
printf("请输入x: ");
scanf("%d",&x);
printf("请输入k: ");
scanf("%d",&k);
int a[k], j=0;
for( i=x-1; i>=2; i-- ) {
if(isprime(i)){
a[j++] = i;
if (j>=k)
break;
}
}
for( i=0; i<j; i++ )
printf("%d ", a[i]);
return 0;
}
int isprime(int n)
{
int i;
if(n<=3) return n>1;
for(i=2;i*i<=n;i++)
if(n%i==0) return 0;
return 1;
}
#include <stdio.h>
int isprime( int n);
int pe(int x,int k,int a[]);
void main()
{
int x,k,i,j;
printf("请输入x: ");
scanf("%d",&x);
printf("请输入k: ");
scanf("%d",&k);
int a[k];
j = pe(x,k,a);
for( i=0; i<j; i++ )
printf("%d ", a[i]);
}
int pe(int x,int k,int a[])
{
int i;
int j=0;
for( i=x-1; i>=2; i-- ) {
if(isprime(i)){
a[j++] = i;
if (j>=k)
break;
}
}
return j;
}
int isprime(int n)
{
int i;
if(n<=3) return n>1;
for(i=2;i*i<=n;i++)
if(n%i==0) return 0;
return 1;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632