armen9494-ի խոսքերից
դե նախ եթե ասում է, որ "ենթադրվում է տրված վեկտորի առաջին և վերջին տարրերը պարզ չեն", ապա նրանց կարելի է ցիկլի մեջ չվերցնել: (ցիկլը առաջին տեղը սարքի 2,n-1 , իսկ երկրորդ տեղը n-1,2)
Ընդեղ երկու անգամն էլ որ գտնում ես պարզ թիվը ցիկլից միանգամից դուրս արի (break արա): Կարմիրով էդ մասը ուղղել եմ: Ալգորիթմը ոնց որ թե վերջացրած չէր, էդքան մասը ուղղել եմ, իմ կարծիքով ճիշտ եմ արել: Մեկ էլ հիշի ոչ թե x[i]-ն այլ հենց [i]-ն, որովհետև դու x[i]-ի հետ ոչ մի բան չես անելու, ինքը քեզ պետք չի գալու, քեզ իրա դիրքն ա պետք:
Էն կանաչ գույնով արածներս պարտադիր չեն, բայց ցանկալի են, քանի որ հենց ինքը մի անգամ T=1 գործողությունը արեց, նշանակում ա հասկացավ, որ թիվը պարզ չի, էլ ի՞նչ իմաստ ունի ստուգել մնացածի համար, դրա համար ըտեղից էլ break արա:
հիմա դու L-ի մեջ ունես առաջին պարզ թվի դիրքը, իսկ K-ի մեջ վերջին: Փորձի շարունակես, հիմա երկու ցիկլ էլի պիտի անես, որոնց մեջ հաշվես գումարը:
Կարամ նաև մի ավելի օպտիմալ տարբերակ առաջարկեմ.
ներմուծելուց հետո մի s փոփոխական վերցրու (s=x[1] ): Նորից 2,n-1 ցիկլ արա, որի մեջ նորից ստուգի պարզ թիվ լինելը: Եթե թիվը պարզ չի, ապա թող s=s+x[i] անի, հակառակ դեպքում (եթե պարզ ա) դուրս գա ցիկլից:
Ցիկլից դուրս գալուց հետո դու կունենաս s-ի մեջ մինչև առաջին պարզ թիվը եղած տարրերի գումարը:
Հետո s=s+x[n] արա: Ու նորից ցիկլ բացի (n-1, 2) ու նույն բանը արա, ինչ նախորդ ցիկլում:
Ի դեպ՝ էն s=s+x[n] կարող ես չանել, բայց սկզբում s=x[1]-ի փոխարեն պիտի գրես s=x[1]+x[n] , ուղղակի սկզբում ըտենց գրեցի, որ պարզ լինի, սաղ չխառնվի իրար:
Էջանիշներ