判断101-200之间有多少个素数,并输出所有素数。(判断素数的方法:用一个数分别去除2到sqrt(该数),如果能被整除,则表明此数不是素数,反之是素数。)

判断101-200之间有多少个素数,并输出所有素数。(判断素数的方法:用一个数分别去除2到sqrt(该数),如果能被整除,则表明此数不是素数,反之是素数。)

这里讲的很细致,我用的手机,不然直接给你敲代码了,你可以直接参考下面这篇
https://blog.csdn.net/jingling555/article/details/127467350?app_version=5.15.7&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127467350%22%2C%22source%22%3A%22u012855229%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app

供参考:

#include <stdio.h>
int main()
{
    int i, j, flg;
    for (i = 101; i <= 200; i++) {
        for (j = 2, flg = 1; j * j <= i; j++) {
            if (i % j == 0) { flg = 0; break; }
        }
        if (flg)
            printf("%d ", i);
    }
    return 0;
}

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7473097
  • 你也可以参考下这篇文章:求100-200的素数(用到sqrt()函数)
  • 以下回答由chatgpt基于相关博客总结生成:

    段落1:

    1. 定义一个顺序表结构体:SqList,包含三个成员:Date(存放元素的数组指针),N(表中元素个数),MaxSize(表的最大容量)
    
    struct Sqlist{
        int *Date;  //存放元素的数组指针
        int N;  //表中元素个数
        int MaxSize;  //表的最大容量
    };
    
    2. 创建空链表:Crelist,接受一个整型参数,表示表的最大容量,目的是为Date分配内存
    
    struct SqList *Crelist(int m) 
    {
        struct Sqlist *L;
        L = (struct Sqlist*)malloc(sizeof(struct Sqlist));
        L ->Date = malloc(sizeof(int)*m);
        L->N = 0;
        L->MaxSize = m;
        return L;
    }
    
    3. 产生随机数并插入链表:RandInsert,接受一个指向SqList类型的结构体指针以及整型参数m,使用rand()函数产生100个大于等于100且小于200的随机整数,将其存储于L结构体变量的Date数组中,并更新L->N
    
    void RandInsert(struct Sqlist *L,int m)  
    {
        int i;
        for(i = 0; i<m; i++)
        {
            L->Date[i]=rand()%100+100;
            L->N++;
        }
    }
    
    4. 输出结果:Show,接受一个SqList类型的结构体指针,使用for循环遍历输出,每20个数字换一行,最后一行换两次行
    
    void Show(struct Sqlist *L)  
    {
        int i;
    
        for(i=0 ;i<L->N;i++){
            if((i+1)%20==0) 
                printf("%d\n",L->Date[i]);
            else if((i+1)==100) 
                printf("%d\n\n",L->Date[i]);
            else
                printf("%d ",L->Date[i]);
        }
    } 
    
    5.  删除偶数:DeletDou,接受一个SqList类型的结构体指针,使用for循环遍历数组,删除所有偶数
    
    void DeletDou(struct Sqlist *L ) //删除偶数 
    {
        int i,j;
    
        for(i=0 ;i<L->N;i++){
            if((L->Date[i])%2==0){
    
                for(j=i ;j<L->N;j++)
                {
                    L->Date[j]=L->Date[j+1];
                }
                i=i-1;
                L->N--;
            }
        }
    
    }
    
    6. main函数实现,其中随机数的种子使用time()函数获取当前时间进行设置,避免每次随机数都相同。
    
    int main(){
        int m,i;
        struct Sqlist*p,*q;
    
        scanf("%d",&m);
    
        p=Crelist(m);
        RandInsert(p,m);
        Show(p);
        printf("\n");
        q=p;
        DeletDou(q);
        Show(q);
        return 0; 
    }
    

    段落2:

    1. 从101到200之间循环遍历每个数,对于每个数,从2到sqrt(这个数)进行整除,若能整除则为非素数,把leap标记为0,跳出内层循环,否则为素数,输出这个数,并把leap标记为1,内层循环结束判断leap是否为1,是则h加1,不是则继续循环下一个数
    
    int m, i, k, h = 0, leap = 1;
    for (m = 101; m <= 200; m++) {
        k = sqrt(m + 1);
        for (i = 2; i <= k; i++)
            if (m % i == 0) {
                leap = 0;
                break;
            }
        if (leap) /*内循环结束后,leap依然为1,则m是素数*/
            {
            printf("%-4d", m);
            h++;
            if (h % 10 == 0)
                printf("\n");
            }
            leap = 1;
    }
    printf("\nThe total is %d", h);
    
    2. 可以将代码嵌入到main函数中,这里还需要包含头文件math.h。
    
    int main() {
    
        int m, i, k, h = 0, leap = 1;
        printf("\n");
    
        for (m = 101; m <= 200; m++) {
            k = sqrt(m + 1);
            for (i = 2; i <= k; i++)
                if (m % i == 0) {
                    leap = 0;
                    break;
                }
            if (leap)
            {
            printf("%-4d", m);
            h++;
            if (h % 10 == 0)
                printf("\n");
            }
            leap = 1;
        }
        printf("\nThe total is %d", h);
        return 0;
    }