#include<iostream>
#include<math.h>
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include<iostream>
#include<math.h>
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
long long int 換成int不知有沒有差?
然後再優化I/O?!
測試執行大約等於建表時間=4ms
應該沒問題吧
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
long long int 換成int不知有沒有差?
然後再優化I/O?!
測試執行大約等於建表時間=4ms
應該沒問題吧
改int就AC了
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
long long int 換成int不知有沒有差?
然後再優化I/O?!
測試執行大約等於建表時間=4ms
應該沒問題吧
改int就AC了
剛剛查了一下
long long int比int慢1倍左右
能用int就用int
#include
#include
using namespace std;
int prime(long long int a[5000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=2;j<=sqrt(i);j+=2){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[5000];
}
int main(){
long long int n,a[5000];
a[5000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=2;i<5000;i++){
if(a[i]==0){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>=n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}
}
根據本人的私自臆測,陣列 a 應該是用來儲存小於 50000 的質數對吧?
可是小於 50000 的質數之個數是 5133 個,超過了陣列 a 的大小。
我有改了一下陣列大小,可是還是跑不動耶
j+=2改成j++呢?
j+=2好像檢查不到所有可能的質因數吧?!
#include
#include
using namespace std;
int prime(long long int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
long long int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0){
break;
}else if(n==a[i]){
break;
}else if(n%a[i]==0){
flag=1;
break;
}else if(a[i]>n){
flag=1;
break;
}
}
if(flag!=0) cout<<"非質數";
else cout<<"質數";
cout<<"\n";
}
}
long long int 換成int不知有沒有差?
然後再優化I/O?!
測試執行大約等於建表時間=4ms
應該沒問題吧
改int就AC了
剛剛查了一下
long long int比int慢1倍左右
能用int就用int
#include<iostream>
#include<math.h>
using namespace std;
int prime(int a[6000]={0}){
int k=1;
a[0]=2;
for(int i=3;i<50000;i++){
int flag=0;
for(int j=1;j<=sqrt(i);j++){
if(i%j==0&&j!=1){
flag=1;
break;
}
}
if(flag==0){
a[k]=i;
k++;
}
}
return a[6000];
}
int main(){
int n,a[6000];
a[6000]=prime(a);
while(cin>>n){
int flag=0;
for(int i=0;i<6000;i++){
if(a[i]==0||n==a[i]){
break;
}else if(n%a[i]==0||a[i]>n){
flag=1;
break;
}
}
if(flag==0) cout<<"質數";
else cout<<"非質數";
cout<<"\n";
}