C语言程序设计,上机测试

编写函数实现将小于整数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