【C语言-37】实现一个函数,判断一个数是不是素数。

目录

 

题目分析:

素数判断:n能否被2~n-1整除:

判断素数:n能否被2~√n整除


题目分析:

  1. 实现一个函数,判断一个数是不是素数。
  2. 素数的定义是大于1的自然数中,只能被1和他本身整除,1不是素数.
  3. 因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,
  4. 要判断一个数是否为素数,只要判断比它开根号后的数小的数,能否把它整除.
  5. 如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。
  6. 所以我们有两种方法判断素数:

素数判断:n能否被2~n-1整除:

  1. 代码示例
  2.  
#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int prime(int n)
{
	int i;
	if (n < 2) {
		printf("%d不是素数", n);
	}
	else {
		for (i = 2; i < n; i++) {//判断n在2~n-1中有没有因数
			if (n%i == 0)//如果用可以除尽的数,则非素数
				break;
		}
		if (i < n) {//存在2~n-1之间有因数
			printf("%d不是素数\n", n);
		}
		else
			printf("%d是素数\n", n);

			
	}
	return 0;
}

int main() {
	int n;
	printf("请输入一个数:\n");
	scanf("%d", &n);
	prime(n);
	system("pause");
	return 0;
	
}
  1. 运行结果: 

判断素数:n能否被2~√n整除

  1. 代码示例 
  2.  
  3. #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    int main() {
    	int n, i;
    	double k;
    
    	printf("输入一个数:\n");
    
    	scanf("%d", &n);
    
    	k = sqrt(n);//取n的平方根k
    
    	for (i = 2; i <= k; i++) {
                   if (n%i == 0)
    
    			break;
    	}
    	if (n <= 1)
    		printf("%d不是素数\n", n);
    	else if (i <= k)
    		printf("%d不是素数\n", n);
    	else
    		printf("%d是素数\n", n);
    
    	system("pause");
    
    	return 0;
    }
    

    运行结果:

  4. 早安,

在我有生之日,做一个真诚的人;

不放弃对生活的热爱和执着,在有限的时空里过无限广大的日子;

                                                                          --------------三毛                                                                                                         

猜你喜欢

转载自blog.csdn.net/weixin_44749767/article/details/89303469