功能:筛选出100~300之间的素数,并每行5个的输出并统计素数个数(函数部分功能是判断是否是素数)。

功能:筛选出100~300之间的素数,并每行5个的输出并统计素数个数(函数部分功能是判断是否是素数)。

img

参考如下:

int fun(int m)
{
    int i;
    int flag = 1;
    for (i = 2; i * i <= m; i++)
    {
        if (m % i == 0)
        {
            flag = 0;
            break;
        }
    }
    return flag;
}
#include <stdio.h>
#include <stdbool.h>

bool isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    if (isPrime(num)) {
        printf("%d是素数。\n", num);
    } else {
        printf("%d不是素数。\n", num);
    }
    return 0;
}

供参考:

int fun(int m)
{
    /*********Program**********/
    int i;
    if (m < 4)
        return m > 1;
    for (i = 2; i * i <= m; i++)
        if (m % i == 0) return 0;
    return 1;
    /********** End ***********/
}

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7614266
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:判断101~300之间有多少个素数,输出所有素数(每行输出10个)和素数的个数。
  • 除此之外, 这篇博客: 打印100~200之间的素数,与构造判断一个数是否为素数的函数中的 打印100~200之间的素数,与构造判断一个数是否为素数的函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 
    #include<stdio.h>
    
    int is_prime(int n)
    {
    	int j = 0;
    	for (j = 2; j < n; j++)
    	{
    		if (n%j == 0)
    			return 0;
    	}
    	return 1;
    }
    
    void main()
    {
    	int i = 0;
    	for (i = 100; i <= 200;i++)
    	if (is_prime(i) == 1)
    		printf("%d\n", i);
    }
    

    可以进行算法改进:将判断函数 for 语句的判断条件改为 sqrt (求平方根)函数,可大大减少计算时间,提高代码运行效率,此外要引一个新的头文件 #include<math.h>

    
    #include<stdio.h>
    #include<math.h>
    
    int is_prime(int n)
    {
    	int j = 0;
    	for (j = 2; j < sqrt(n); j++)
    	{
    		if (n%j == 0)
    			return 0;
    	}
    	return 1;
    }
    
    void main()
    {
    	int i = 0;
    	for (i = 100; i <= 200;i++)
    	if (is_prime(i) == 1)
    		printf("%d\n", i);
    }
    

    而判断一个数是否为素数的函数为:

    #include<stdio.h>
    #include<math.h>
    
    int is_prime(int n)
    {
    	int j = 0;
    	for (j = 2; j < sqrt(n); j++)
    	{
    		if (n%j == 0)
    			return 0;
    	}
    	return 1;
    }