在敲代码时,遇到的这道题。后来搜索了下。
找到了一些简单的方法:(质数又称素数,一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。)
这个是多组输入,单个判断是否为素数,想要结束时按Ctrl+Z。
#include<stdio.h> #include<math.h> int main() { int n=0; while (~scanf("%d", &n)) { int i = 0; int k = sqrt(float(n)); for (i = 2; i <= k; i++) if (n%i == 0) break; if (i <= k) printf("%d 不是素数\n", n); else printf("%d 是素数\n", n); } return 0; }
输出100以内的所有素数。(第一种方法)
#include<stdio.h> int main() { int i = 0; int count = 0; for (i = 2; i <= 100; i++) { int j = 0; for (j = 2; j < i; j++) { if (i%j == 0) break; } if (i == j) printf("%d是素数\n", i); else printf("%d不是素数\n", i); count++; } printf("%d\n", count); return 0; }
输出100以内的所有素数。(第二种方法)
#include<stdio.h> int main() { int i = 0; int count = 0; printf("2是素数\n"); for (i = 3; i <= 100; i += 2) { int j = 0; for (j = 2; j < i; j++) { if (i%j == 0) break; } if (i == j) printf("%d是素数\n", i); else printf("%d不是素数\n", i); count++; } printf("%d\n", count); return 0; }
输出100以内的所有素数。(第三种方法)
#include<stdio.h> #include<math.h> int main() { int i = 0; int count = 0; for (i = 2; i <= 100; i++) { int j = 0; for (j = 2; j <=sqrt(float(i)); j++) { if (i%j == 0) break; } if (j<=sqrt(float(i))) printf("%d不是素数\n", i); else printf("%d是素数\n", i); count++; } printf("%d\n", count); return 0; }
输出100以内的所有素数。(第四种方法)
#include<stdio.h> #include<math.h> int main() { int i = 0; int count = 0; printf("2是素数\n"); for (i = 3; i <= 100; i += 2) { int j = 0; for (j = 2; j <= sqrt(float(i)); j++) { if (i%j == 0) break; } if (j <= sqrt(float(i))) printf("%d不是素数\n", i); else printf("%d是素数\n", i); count++; } printf("%d\n", count); return 0; }
以上就是我觉得比较简单的一些方法。
素数的求解方法很多,感兴趣的可以去研究下!