这道素数的判定水题so easy ,不过还是要注意范围,不然会超时
第一次我就TLE了。。。。。
这是一开始超时的代码:
#include<iostream>//猜想:每个大于4的偶数都可以写成两个素奇数的和
#include<cstdio>
#include<cstdlib>// 6 <= n < 1000000,取b-a是最大的时候
using namespace std;
int toprime(int n)
{
for(int i=2;i<n;i++)
{
if(n%i==0) return 1;
else continue;
}
return 0;
}
int main()
{
int m=1;
while(m!=0)
{
cin>>m;
for(int i=3;i<m/2;i+=2)
{
if(toprime(i)==0)//如果i是素数
{
if(toprime(m-i)==0)
{cout<<m<<"="<<i<<"+"<<m-i<<endl;
break;}
else
continue;
}
}
}
return 0;
}
这是修改之后成功通过的代码:
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
bool isprime ( int k )
{
int t = sqrt ( k + 0.5 ) ;
for ( int i = 2 ; i <= t ; i ++ )
if ( k % i == 0 )
return false ;
return true ;
}
int main()
{
int n ;
while ( scanf ("%d", &n) , n )
{
int i ;
int t = n / 2 ;
for ( i = 3 ; i <= t ; i += 2 )
if ( isprime ( i ) && isprime ( n - i ) )
break ;
printf ( "%d = %d + %d " , n , i , n - i ) ;
}
return 0;
}
嗯,就这样了。。。。。