#include <stdio.h>int prime(int n){int i = 1;for(i = 2;i < n;i++){if(n % i == 0)return 0;}return 1;
}
//打印100-200之间的素数
int main()
{int n = 0;int j = 100;for(j = 100;j <= 200;j++){if(prime(j)){printf("%d是素数\n",j);n++;}}printf("100-200之间素数有%d个\n",n);/*scanf("%d",&n);if(prime(n))printf("%d是素数\n",n);elseprintf("%d不是素数\n",n);*/return 0;
}
还可以改进,如果n = m * m,a * b = n,那么a,b中必定有一个数 <= m。
sqrt是数学库函数,开平方,使用时需包含头文件math.h。
#include <stdio.h>
#include <math.h>int prime(int n){int i = 1;for(i = 2;i <= sqrt((double)n);i++){if(n % i == 0)return 0;}return 1;
}
//打印100-200之间的素数
int main()
{int n = 0;int j = 100;for(j = 100;j <= 200;j++){if(prime(j)){printf("%d是素数\n",j);n++;}}printf("100-200之间素数有%d个\n",n);system("pause");return 0;
}
这样也可以得出正确的结果:
偶数一定能被2整除,不是素数。可以再改进一下,从101开始,每次递增2
#include <stdio.h>
#include <math.h>int prime(int n){int i = 1;for(i = 2;i <= sqrt((double)n);i++){if(n % i == 0)return 0;}return 1;
}
//打印100-200之间的素数
int main()
{int n = 0;int j = 100;for(j = 101;j <= 200;j = j + 2){if(prime(j)){printf("%d是素数\n",j);n++;}}printf("100-200之间素数有%d个\n",n);return 0;
}