问题:输入一个数x,输出x以内的所有素数
素数的定义: ( 方法1 )在大于1的自然数中,除了1和它本身以外不再有其他因数。
更简便: ( 方法2 )x不必被2~(n-1)的个整数整除,只需被2~n/2的整数整除,( 方法3 )甚至2~根号n
//输入一个数x,输出x以内的所有素数 //素数的定义: ( 方法1 )在大于1的自然数中,除了1和它本身以外不再有其他因数。 //更简便: ( 方法2 )x不必被2~(n-1)的个整数整除,只需被2~n/2的整数整除,( 方法3 )甚至2~根号n #define _CRT_SECURE_NO_WARNINGS #include#include //( 方法1 ) void OutputSushu(int x) { for (int i = 2;i <= x;i++) {//从2开始判断是不是素数(1肯定不是) int j = 2; for (;j < i;j++) {//判断能不能被2~x-1整除 if (i % j == 0) {//被整除,说明不是素数 break; } } if (j >= i) {//如果没有被2~x-1整除,j最后++值≥i printf("%d ", i); } } } //( 方法2 ) //void OutputSushu(int x) //{ // for (int i = 2;i <= x;i++) {//从2开始判断是不是素数(1肯定不是) // int j = 2; // for (;j <= i/2;j++) {//判断能不能被2~x/2整除 // if (i % j == 0) {//被整除,说明不是素数 // break; // } // } // if (j > i/2) { // printf("%d ", i); // } // } //} //( 方法3 ) //void OutputSushu(int x) //{ // for (int i = 2;i <= x;i++) {//从2开始判断是不是素数(1肯定不是) // int j = 2; // int k = sqrt(i); // for (;j <= k;j++) {//判断能不能被2~k整除 // if (i % j == 0) { // break; // } // } // if (j > k) { // printf("%d ", i); // } // } //} int main() { int x; printf("请输入一个数: n"); scanf("%d", &x); printf("%d以内的素数有: n", x); OutputSushu(x); return 0; }



