赞
踩
检查素数,取余到它的根号
#include <stdio.h> #include <math.h> int isPrime(int x) { int i, ret; if (x < 2) ret = 0; else { for (i = 2; i < sqrt(x); i++) if (x % i == 0) break; if (i > sqrt(x)) ret = 1; else ret = 0; } return ret; } int main() { int M, N, i, count, sum; count = sum = 0; scanf("%d %d", &M, &N); for (i = M; i <= N; i++) { if (isPrime(i)) { count++; sum += i; } } printf("%d %d", count, sum); return 0; }
运行结果如下:
普通做法,时间复杂度高
#include <stdio.h> int isPrime (int x) { int i, ret; if (x < 2) ret = 0; //0、1等不是素数。 else { for (i = 2; i < x; i++) //素数:除了1和它本身才能除尽的数。 if (x % i == 0) break; if (i == x) ret = 1; else ret = 0; } return ret; } int main() { int M, N, i, count, sum; count = sum = 0; scanf("%d %d", &M, &N); for (i = M; i <= N; i++) { if (isPrime(i)) { count++; sum += i; } } printf("%d %d", count, sum); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。