C에서 소수를 찾는 세 가지 쉬운 방법! ! !

소수를 찾는 C 언어 함수의 방법

직접적인 피로

이 방법의 아이디어는n은 각각 2에서 (n-1)까지 모든 숫자를 나눕니다.판단하자면 나머지 0이 있으면 소수가 아니고 나머지가 0이 아니면 소수입니다.
함수:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int Prime(int num){
    
    
		if (num <2){
    
        //2是最小的素数所以直接排除更小的
			return 0;
		}
		for (int i = 2; i <num; i++){
    
    
			if (num%i == 0){
    
    
				return 0;//能整除的就不是素数
			}
		}
		return 1;// 素数得到
	}
	

요구 100-200으로 소수 :

	int main()
	{
    
    
		int num = 0;
		for (num = 100; num <= 200; num++){
    
    //输入100-200的素数
			if (Prime(num) == 1){
    
    //函数中return 1的都是素数
				printf("%d\n", num);	
				}
			}
		system("pause");
		return 0;
	}

숫자가 소수인지 확인 :

int main()
	{
    
    
		int num = 0;
		printf("输入一个数判断是否是素数:");
			scanf("%d", &num);
			int a=Prime(num);
			if (a == 1){
    
    
				printf("是素数");
			}
			else
				printf("不是素数");
		system("pause");
		return 0;
	}

반으로 자르다

for 루프의 조건 만 변경되어 계산량이 반으로 줄어 듭니다.
2가 가장 작은 제수이기 때문에 1/2 이후에 숫자를 균등하게 나누는 것은 불가능합니다.

현재 추가 "="기호가 있으므로 사각형 숫자가 제거됩니다.

int Prime(int num){
    
    
		if (num <2){
    
      
			return 0;
		}
		for (int i = 2; i <num; i++){
    
    
			if (num%i == 0){
    
    
				return 0;
			}
		}
		return 1;
	}

로 변경:

int Prime(int num){
    
    
		if (num <2){
    
       
			return 0;
		}
		for (int i = 2; i <=num/2; i++){
    
    
		//这里的for条件改变
			if (num%i == 0){
    
    
				return 0;
			}
		}
		return 1;
	}

제곱근 함수 호출

for 루프의 조건도 변경되어 더 많은 계산이 직접적으로 줄어 듭니다.
숫자의 두 제수는 제곱근보다 작거나 같은 값을 가져야하기 때문입니다.
현재 추가 "="기호가 있으므로 사각형 숫자가 제거됩니다.
여기에 사진 설명 삽입헤더 파일을 추가합니다.

#include <math.h>

int Prime(int num){
    
    
		if (num <2){
    
      
			return 0;
		}
		for (int i = 2; i <num; i++){
    
    
			if (num%i == 0){
    
    
				return 0;
			}
		}
		return 1;
	}

로 변경

int Prime(int num){
    
    
		if (num <2){
    
    
			return 0;
		}
		for (int i = 2; i <=sqrt(num*1.0); i++){
    
    
		//这里引用了平方根函数sqrt
			if (num%i == 0){
    
    
				return 0;
			}
		}
				return 1; 
	}

보충 :
2와 3을 제외하고 두 개의 소수가 인접 해 있지 않다는 것을 제외하고는 또 다른 최적화 아이디어가 있습니다. 따라서 i + = 2가 될 수 있습니다. 전제는 홀수 시작입니다

추천

출처blog.csdn.net/zhaocx111222333/article/details/109379498