设计一个函数,用以判断一个整数是否为素数,如果是,则返回1;如果不是,则返回0;并利用此函数,找出m-n

设计一个函数,用以判断一个整数是否为素数,如果是,则返回1;如果不是,则返回0;并利用此函数,找出m-n之间的所有素数,并统计其个数,m、n由键盘输入。
输入: 数据范围m-n。

输出: m-n之间的所有素数及个数。
输入样例: 100 200

输出样例: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
21
c语言程序

可以负责任的说楼上的方法是错误的,会判断失误,比如121就会被当成素数,正确的算法是将这个数除以从2到这个数开二次方根,如果都除不尽才是素数。给你个java语言算法,忘了c++语法怎么写了。
int suShuRange(int m,int n){
for(int i=m;i<=n;i++){
if(judge(i))System.out.print("i ");//输出i
}
}
boolean judge(int n){//判断n是否为素数
for(int i=2;i<Math.sqrt(n);i++)
if(n%i==0)return false;
return true;
}
c语言的,我就把一楼改了,请试试吧
#include<iostream>
using namespace std;
int count;
void panduan(int a,int b)
{
for(int i=a;i<=b;i++)
{
for(int j=2;j<sqrt(i);j++)
if(i%j==0)return;
cout<<i<<endl;
}
}
void main()
{
int m,n;
cin<<m<<n;
panduan(m,n);
cout<<endl;
cout<<coun;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-23
JAVA 实现,输入的数字之间要用空白隔开.如果输入的第一个数字比第二个小,譬如200 100程序提示小了。会自动调整比较100, 200

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

System.out.print("Please input two digits(separate with space): ");
Scanner scanner = new Scanner(System.in);

String input = scanner.nextLine();

String[] nums = input.split("\\s+");

int min = Integer.parseInt(nums[0].trim());
int max = Integer.parseInt(nums[1].trim());
if(min > max){
int temp = min;
min = max;
max = min;
System.out.println("输入的第一个数字比第2个大,出错!程序将比较" + max + "和" + min + “之间的质数");
}

int primeNumCount = 0;

for(int i = min; i <= max; i++){
if(validatePrimeNum(i) == 1){
System.out.print(i + " ");
primeNumCount++;
}
}

System.out.println("\nTotal " + primeNumCount + " prime number found between " + min + " and " + max);

}

public static int validatePrimeNum(int num){

for(int i = 2; i <= Math.sqrt(num); i++){
if(num % i == 0){
return 0;
}
}

return 1;
}
}

--------------------
Please input two digits(separate with space): 100 200
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
Total 21 prime number found between 100 and 200
第2个回答  2011-03-22
#include<stdio.h>
int count;
void panduan(int a,int b)
{
for(int i=0;i<a-b;i++)
{
if(((a%2)!=0)&&((a%3)!=0)&&((a%5)!=0))
{
printf(%d,a," ");
count++;
}
}
void main()
{
int m,n;
scanf(&m,%d,&n,%d);
panduan(m,n);
printf(\n,%d,count);
}

C程序很久没有编过来,估计有不少错误,不过思路应该是可行的,下面再给一个C++程序,其实与C差不多,只是输入输出简单些,所以本人觉得编程相对要简单些。
#include<iostream>
using namespace std;
int count;
void panduan(int a,int b)
{
for(a<=b)
{
if(((a%2)!=0)&&((a%3)!=0)&&((a%5)!=0))
{
cout<<a<<" ";
count++;
}
a++;
}
void main()
{
int m,n;
cin<<m<<n;
panduan(m,n);
cout<<endl;
cout<<coun;
}
第3个回答  2011-03-22
import java.util.*;
public class Test{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int value=0;
int values=0;
value = sc.nextInt();
values = sc.nextInt();
new Test().check(value,values);
}
public void check(int i,int j){
boolean boo = false;
if(i>j){
System.out.println("你输入的数字不符合");
}else{
for(int k=i;k<j;k++){
for(int h=k-1;h>1;h--){
if(k%h==0){
boo = true;
}
}
if(boo == false){
System.out.print(k+" ");
}else{
boo = false;
}
}
}
}
}
第4个回答  2011-03-30
void sushu( int x )
{
if(x<2)
return 0;
if(x=2)
return 1;
int i,loop=1;
for(i=2;i<x;i++)
{
if(x%i==0)
{
loop=0;
continue;
}
}
return loop;
}
调用就可以了。这是一个判断函数。