在測試執行都可以
但解題一直WA...(line2008)
剛學C沒多久
只想得到一些直觀的解法...
懇請大家幫幫忙(m(> д <)m)!!!
(↓以下我的code)
-------------------------------------------------
#include <stdio.h>
#include <math.h>
int main()
{
int x;
x<=2 && x>=2147483647;
while (scanf("%d",&x)!=EOF)
{
int i;
double n;
n=sqrt(x);
if( n<2 && n>1 )
{
printf("質數\n");
}
else
{
for( i=2 ; i<=n ; i++ )
{
if( x%i == 0 )
{
printf("非質數\n");
break;
}
else
{
printf("質數\n");
break;
}
}
}
}
return 0;
}
在測試執行都可以
但解題一直WA...(line2008)
剛學C沒多久
只想得到一些直觀的解法...
懇請大家幫幫忙(m(> д <)m)!!!
(↓以下我的code)
-------------------------------------------------
#include
#include
int main()
{
int x;
x<=2 && x>=2147483647;
while (scanf("%d",&x)!=EOF)
{
int i;
double n;
n=sqrt(x);
if( n1 )
{
printf("質數\n");
}
else
{
for( i=2 ; i<=n ; i++ )
{
if( x%i == 0 )
{
printf("非質數\n");
break;
}
else
{
printf("質數\n");
break;
}
}
}
}
return 0;
}
如果是新手的話最好別解這題@@
真要做的話去查查建表法吧
需要我的CODE在密我
在測試執行都可以
但解題一直WA...(line2008)
剛學C沒多久
只想得到一些直觀的解法...
懇請大家幫幫忙(m(> д <)m)!!!
(↓以下我的code)
-------------------------------------------------
#include
#include
int main()
{
int x;
x<=2 && x>=2147483647;
while (scanf("%d",&x)!=EOF)
{
int i;
double n;
n=sqrt(x);
if( n1 )
{
printf("質數\n");
}
else
{
for( i=2 ; i<=n ; i++ )
{
if( x%i == 0 )
{
printf("非質數\n");
break;
}
else
{
printf("質數\n");
break;
}
}
}
}
return 0;
}
#include<stdio.h>
#include<math.h>
#define MAX 65537
int prime[6542],len=0 ;
void set_prime()
{
prime[len++]=2 ;
for (int i=3 ;i<MAX;i+=2 )
{
bool ok=1;
for (int j=0,k=floor(sqrt(i)) ;prime[j]<=k ;j++ )if (i%prime[j]==0)
{
ok=0;
break;
}
if (ok)prime[len++]=i;
}
}
bool is_prime(int n)
{
for (int i=0 ,k=floor(sqrt(n));prime[i]<=k;i++ )
if (n%prime[i]==0)
return 0;
return 1;
}
int main()
{
set_prime() ;
int n;
while (~scanf("%d",&n))
{
printf("%s\n",is_prime(n)?"質數":"非質數") ;
}
}
這是我的CODE
可能對你來說太難
參考看看吧