#include<stdio.h>
#include<math.h>
int tra_to_int(char input[],int box[]){
int i,j=0;
box[0]=0;
while(input[i]!='\0'){
if(input[i]==' '){//讀到空白
j++;
box[j]=0;//往box下一個存
}
else{
box[j]=box[j]*10+(input[i]-48);
}
i++;
}
return j;
}
int prime(int a){
int i;
float sq;
sq=sqrt(a);
if(a==1)return 0;
for(i=2;i<=sq;i++){
if(a%i==0){
return 0;
}
}
return 1;
}
int main(){
char input[3000];
int n,i;
int output=0,temp=0,max=0;
int box[101]={0};
while(scanf("%[^\n]",input)!=EOF){
n=tra_to_int(input,box);//字元換數字回傳n個數字
for(i=0;i<=n;i++){
if(!prime(box[i])){//如果不是質數
if(max>output)output=max;//把數列和存起來
max=0;//子數列和歸零
temp=0;
}
else if(box[i]>temp){//質數且遞增
max=max+box[i];
temp=box[i];
}
}
if(max>output)output=max;
printf("%d\n",output);
getchar();
}
}
#include
#include
int tra_to_int(char input[],int box[]){
int i,j=0;
box[0]=0;
while(input[i]!='\0'){
if(input[i]==' '){//讀到空白
j++;
box[j]=0;//往box下一個存
}
else{
box[j]=box[j]*10+(input[i]-48);
}
i++;
}
return j;
}
int prime(int a){
int i;
float sq;
sq=sqrt(a);
if(a==1)return 0;
for(i=2;i<=sq;i++){
if(a%i==0){
return 0;
}
}
return 1;
}
int main(){
char input[3000];
int n,i;
int output=0,temp=0,max=0;
int box[101]={0};
while(scanf("%[^\n]",input)!=EOF){
n=tra_to_int(input,box);//字元換數字回傳n個數字
for(i=0;i<=n;i++){
if(!prime(box[i])){//如果不是質數
if(max>output)output=max;//把數列和存起來
max=0;//子數列和歸零
temp=0;
}
else if(box[i]>temp){//質數且遞增
max=max+box[i];
temp=box[i];
}
}
if(max>output)output=max;
printf("%d\n",output);
getchar();
}
}
在電腦上測試可以跑
貼上來就出現RE
不太懂為什麼
可否厲害的高手幫我看看 謝謝