赞
踩
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
10 31
7 143
#include<stdio.h> #include<math.h> int isPrime( int N ) ; int main(void){ int M , N ;scanf("%d %d",&M,&N) ; int i = 0 , sum = 0 ; for( ; M <= N ; M++ ){ if( isPrime(M)){ i++ ; sum = sum + M ; } } printf("%d %d",i,sum) ; return 0 ; } int isPrime( int N ) { N = abs(N) ; int result = 0 ;//默认不是素数,也就默认0、1不是素数 //当N<=25时,根本无法进入该循环,也就无法用该方法判断 for( int i = 1 ; ( 6*i - 1 ) <= sqrt(N) ; i++ ){ if( N % 2 == 0 || N % 3 == 0 || N % ( 6*i - 1 ) == 0 || N % ( 6*i + 1) == 0 ){ result = 0 ; break ; }else{ result = 1 ; } } //当N = 2,或者N = 3时,根本无法进入该循环,也就无法用该方法判断 for( int j = 2 ; j <= sqrt(N) && N < 25 ; j++){ if( N % j == 0 ){ result = 0 ; break ; }else{ result = 1 ; } } //2,3要单独拿来判断 if( N == 2 || N == 3 ){ result = 1;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。