萧永成 法人:帮我看看 tongji 上的 那道 数素数!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 17:26:39
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
long M,N,i,sum=0;
scanf("%ld %ld",&M,&N);
for (i=M;i<=N;i++)
if (f(i)) sum++;
if (M=1) sum--;
printf("%ld\n",sum);
return 0;
}

int f(long int x)
{
int m;
long int i,a;
a=(long)sqrt(x);
for (i=2;i<=a;i++)
{
if (x%i==0) {m=0;break;}
else m=1;
}
return (m);
}

为什么会 wrong answer 呢?

朋友,你的程序我没看懂,要是求素数,我有个程序,是用Microsoft Visual Studio .NET 2003编的,你看能不能用

//求素数
#include <iostream>
using namespace std;

int main()
{
int Min_num, Recy_num, Flag = -1, Max_num, Test_num;
cout << "Judge Prime Number" << endl;
cout << "Please Input The Total Number :" << "\n" <<endl;
cout << "From" << endl;
cin >> Min_num ;
cout << "To" << endl;
cin >> Max_num ;
if ( Max_num < Min_num)
{
cout << "Maybe You Input Some Wrong Number!!" << "\n" << endl;
main ();
}
else
{
for ( Test_num = Min_num; Test_num <= Max_num; Test_num ++)
{
if ( Test_num == 1 || Test_num == 2 || Test_num == 3)
{
Flag = 1;
}
else
{
for ( Recy_num = 2; Recy_num < Test_num; Recy_num ++)
{
if ( Test_num % Recy_num != 0) //除了 1 和 本身 都不能整除
{
Flag = 1;
}
else
{
Flag = 0;
break;
}
}
}
if ( Flag == 1)
{
cout << Test_num << " is Prime Number" << endl;
}
else
{
cout << Test_num << " not Prime Number" << endl;
}
}

}
return ( 0);

}

用free pascal实现求n以内的素数。可以改变常量n。
procedure sushu;
const n=100;
var a:set of 1..n;
b,c:integer;
begin
a:=[1..n];
for b:=3 to 100 do
begin
c:=2;
repeat
if b mod c=0 then
begin
a:=a-[b];
c:=b;
end
else c:=c+1;
until c=b;
end;
a:=a-[1];
for c:2 to n do
if c in a then write(c:4);
write('are sushu.');
end;
begin
sushu;
end.