利用函数计算素数个数并求和:输入两个正整数
m 和 n(1<=m, n<=500),统计并输出 m 和 n 之间的素数的个数以及这些素数的和。要求定义并调用函数 prime(m)判断 m 是否为素数。试编写相应程序。
#include <stdio.h>
int first(int k);
int main()
{
int m,n,sum=0;
scanf("%d%d",&m,&n);
for(m;n;m++)
{
if(first(m))
sum+=m;
}
int first(int m)
{
int i;
for(i=1;i<=m/2;i++)
{
if(k%10==0)return 0;
else
return 1;
}
}
//谁告诉我一下为什么编译会出错,用的dev import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); //m
int b = sc.nextInt();//n
ArrayList<Integer> list = new ArrayList<Integer>();//定义一个list存放素数
while(a<=b){
//如果a为素数,将其放入list中
if(prime(a,list)){
list.add(a);
}
a++;
}
//输出
if(list.size()==0){
System.out.print("none");
return;
}
System.out.print(list.size()+" ");
int sum = 0;
Iterator<Integer> iter = list.iterator();
while(iter.hasNext()){
sum = sum + iter.next();
}
System.out.print(sum);
}
//判断该数是否为素数
public static boolean prime(int n,ArrayList<Integer> list){
if(n==1){
return false;
}
int max = (int)Math.sqrt(n);
for(int i=0;i<list.size();i++){
if(n%list.get(i)==0){
return false;
}
if(list.get(i)>max){
return true;
}
}
return true;
}
}
#include "stdio.h" #include "math.h" int main(void) { int count, i, m, n, sum; int prime(int m); scanf("%d%d", &m, &n); count = sum = 0; for(i = m; i <= n; i++) if(prime(i) != 0){ count++; sum = sum + i; } printf("Count = %d, sum = %d\n", count, sum); return 0; } int prime(int m) { int k, i; if(m == 1) return 0; k = sqrt(m); for(i = 2; i <= k; i++) if(m % i == 0) return 0; return 1; }