題目描述
求n到m以內的素數(包含n,m,且m>=n>=1,n<=m<=100)n和m由鍵盤輸入(每個素數后面帶一個空格)
要求:(1)撰寫如下介面的功能函式:int fun(int n),該函式的功能是判斷n是不是素數。若是,回傳1,若不是回傳0。
(2)main函式去呼叫該功能函式。
輸入
7,15(注意帶有,號)
輸出
7 11 13


uj5u.com熱心網友回復:
這個很基礎啦。uj5u.com熱心網友回復:
#include<stdio.h>#include<math.h>
int main()
{
int N, M, x=2, sum=0;
int i, isPrime, cnt=0;
scanf("%d %d", &N, &M);
if( N>0 && N<=M && M<=200 ){
while( cnt<M ){
isPrime=1;
for( i=2; i<=sqrt(x); i++){
if( x%i==0 ){
isPrime=0;
break;
}
}
if( isPrime==1 ){
cnt++;
if( ( cnt>=N )&&( isPrime==1 ) )
sum=sum+x;
}
x++;
}
}
printf("%d", sum);
return 0;
}
uj5u.com熱心網友回復:
唯一可以優化一下的是素數判斷:
#include <stdio.h>
#include <math.h>
inline int isprime(int n)
{
if (n == 2 || n == 3) return 1;
if (n < 5) return 0;
if (n % 6 != 1 && n % 6 != 5) return 0;
for (int i = 3; i <= sqrt((float)n); i += 2)
if (!(n % i)) return 0;
return 1;
}
int main()
{
int n, m;
scanf("%d,%d", &n, &m);
if (n > 0 && m >= n)
{
for (; n <= m; n++)
if (isprime(n)) printf("%d ", n);
puts("");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/42704.html
標籤:基礎類
