C primer plus (第六版)第七章 编程练习第9题
题目:
9.编写一个程序,只接受正整数输入,然后显示所有小于或等于该数的素数。
#include <stdio.h>
long prime(unsigned long num); //优先考虑建立判断素数的函数,素数原值返回,非素数返回-1int 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;}