2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,输出100~200之间的所有素数,要求每行输出10个

2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,输出100~200之间的所有素数,要求每行输出10个


#include <stdio.h>

int is_prime(int n){
    if (n <= 1) {
        return 0;
    }
    for (int i = 2; i*i <= n; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int count = 0;
    for (int i = 100; i <= 200; i++) {
        if (is_prime(i)) {
            printf("%d ", i);
            count++;
            if (count % 10 == 0) {
                printf("\n");
            }
        }
    }
    return 0;
}

参考如下:

#include<stdio.h>
#include <math.h>

int prime(int x)
{
    int i;
    int flag = 1;
    for (i = 2; i <= sqrt(x); i++)
    {
        if (x % i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}

int main()
{
    int n = 100;
    int count = 0;
    for (; n <= 200; n++) 
    {
        if (prime(n)) 
        {
            count++;
            printf("%d ", n);
            if (count % 10 == 0) 
                printf("\n");
        }
    }
    printf("\ncount=%d", count);

}
/*2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,
在main函数中调用该函数,输出100~200之间的所有素数,要求每行输出10个*/
#include <stdio.h>
#include <math.h>
int prime(int m);
int main(){
    int i,j;
    j=1;
    for(i=100;i<201;i++){
         if(prime(i)==1){
             
             printf("%d ",i);
               if(j==10){
                 printf("\n");
                 j=0;
               }
                j++;
         }

    }
    
    return 0;
}
//判断素数的函数
int prime(int m){
    int i,limit;
    if(m<=1){/*小于等于1的数不是素数*/
        return 0;
    }else if(m==2){/*2是素数*/
        return 1;
    }else{/*其他情况:大于2的整数*/
        limit=sqrt(m)+1;
        for(i=2;i<=limit;i++){/*若m能被某个i整除,则m不是素数,返回0*/
            if(m%i==0){
                return 0;
            }
        }
    /*    若循环正常结束,说明m不能被任何一个i整除,则m素数,返回1*/
        return 1;
    }
} 

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7543408
  • 这篇博客你也可以参考下:随机生成一个0到100的数,让用户猜,允许猜5次,每次猜大了或猜小了,都要给出提示,最后给出正确答案
  • 除此之外, 这篇博客: 现代操作系统 第二章 进程与线程 习题中的 19.在图2-15中创建线程和线程打印消息是随机交织在一起的。有没有方法可以严格按照以下次序运行:创建线程1,线程1打印消息,线程1结束,创建线程2,线程2打印消息,线程2结束,以此类推;如果有,是什么方法,如果没有请解释原因。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • A:是的,这是可以做到的。每次执行pthread-create后,主程序可以调用pthread_join等待刚刚创建的线程退出后再创建下一个线程。


  • 您还可以看一下 李月喜老师的企业微信开发自建内部应用开发篇课程中的 开发文档如何阅读,如何寻求帮助,如何找到同行小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:
    #include <stdio.h>
    #include <math.h>
    
    // 判断一个数是否为素数
    int is_prime(int n)
    {
        // 1不是素数
        if(n == 1)
        {
            return 0;
        }
        // 2和3是素数
        if(n == 2 || n == 3)
        {
            return 1;
        }
        // 不是2且为偶数的直接排除
        if(n % 2 == 0)
        {
            return 0;
        }
        // 从3到n的开平方数取整+1如果有能整除的就不是素数
        int i = 0;
        int s = (int)sqrt(n) + 1;
        for(i = 3; i < s; i += 2)
        {
            if(n % i == 0)
            {
                return 0;
            }
        }
        return 1;
    }
    
    int main()
    {
        int count = 0;  // 计数器
        int num = 100;
        while(num <= 200)
        {
            if(is_prime(num))
            {
                printf("%d ", num);
                count++;  // 计数器加1
                if(count % 10 == 0)  // 每10个数字换行
                {
                    printf("\n");
                }
            }
            num++;
        }
        return 0;
    }