C primer plus (第六版)第七章 编程练习第9题

题目:

9.编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数。

#include 
long prime(unsigned long num);              //优先考虑建立判断素数的函数,素数原值返回,非素数返回-1

int main()
{
    long i,j;
    unsigned long positive_integer;         //输入的正整数
    unsigned long prime_print;              //需要打印的素数

    printf("Please entry a positive integer to check:\n");
    printf("entry q to quite\n");

    while ( (scanf("%lu",&positive_integer)) && (positive_integer >= 2) )
    {
        if ( prime(positive_integer) == -1 )                            //如果是非素数
        {
            printf("%lu is not a prime number.\n",positive_integer);    //提示输入的数并非素数
            continue;
        }    
        else
        {
            printf("%lu is a prime number.\n",positive_integer);        //提示输入的是素数
            printf("And all the prime numbers smaller than this number are as following:\n");
            for ( prime_print = positive_integer; prime_print >= 1; prime_print--)
            {
                if ( prime(prime_print) != -1)
                {
                    printf("%lu\n",prime_print);
                    continue;
                }
               
            }
            
        }
        
    }

    printf("Done");
    return 0;
}

long prime(unsigned long num)               //素数判断函数
{
    unsigned long num_check;
    num_check=num;
    int i,j;

    // printf("Please entry positive number:\n");
    // scanf("%lu",&num);

    for (i=1, j=0; i <= num_check; i++)
        {
            if ((num_check % i) == 0)
                j=j+1;
        }
    if (j==2)
        //printf("%lu\n",num);
        return num_check;
    else
        //printf("-1\n");
        return -1;

}

你可能感兴趣的:(C primer plus (第六版)第七章 编程练习第9题)