Both methods determining the number of C language element

Both methods determining the number of C language element

Also known prime number prime number. It refers to the so-called prime number except 1 and itself, is not divisible by any integer number, for example, 17 is a prime number is, because it can not be an integer divisible by any of 2 to 16.

Thinking 1): it is determined whether the integer m is a prime number, m is simply removed every integer between 2 ~ 1 m-, if not divisible, then m is a prime number.

Thinking 2): The method of determination can be simplified further. m need not be removed every integer between 2 ~ 1 m-, need only be removed every integer between 2 to it. If m is not an integer between divisible by any of 2 ~, m must be a prime number. 17 for example, determines whether a prime number, so 17 is simply removed every integer between 2 and 4, since can not divisible, can be determined that 17 is a prime number.

Cause: Because if m be divisible by any integer between 2 ~ m-1, which must have a factor of two less than or equal to, greater than or equal to the other. For example 16 can be divisible by 4, 8, 16 2 = 8,2 = 4 is less than 4,8 is greater than 4,16 4,4 & = √16, so simply determined whether or factor between 2 ~ 4 can.

Look at the two ways of parsing the code.

Thinking 1) of the Code:

#include <stdio.h>

int main(){
    int a=0;  // 素数的个数
    int num=0;  // 输入的整数

    printf("输入一个整数:");
    scanf("%d",&num);

    for(int i=2;i<num;i++){
        if(num%i==0){
            a++;  // 素数个数加1
        }
    }

    if(a==0){
        printf("%d是素数。\n", num);
    }else{
        printf("%d不是素数。\n", num);
    }

    return 0;
}

Thinking 2) code

#include <stdio.h>
#include <math.h>
void main(){
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 

    printf("输入一个整数:");
    scanf("%d",&m);

    // 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;

    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
        printf("%d是素数。\n",m);
    else
        printf("%d不是素数。\n",m);

    return 0;
}
Released seven original articles · won praise 17 · views 1909

Guess you like

Origin blog.csdn.net/Y00010010/article/details/99689849