সি, 91 102 বাইট, সংশোধন (আবার), গল্ফড এবং এইবারের জন্য পরীক্ষিত:
<strike>s(c){p,f,d;for(p=2,f=d=0;p<c&&!d;){if(c%p==0){c/=p;++f;if(c%p==0)d=1;}++p;}c==p&&f==2&&!d;}</strike>
s(c){int p,f,d;for(p=2,f=d=0;p<c&&!d;){if(c%p==0){c/=p;++f;if(c%p==0)d=1;}++p;}return c==p&&f==2&&!d;}
/ * এটি by৩ বাইটেও কাজ করে, তবে যেহেতু আমি গতিশীল ভেরিয়েবলগুলিতে ডিফল্ট ইনট টাইপ ব্যতীত নিয়মাবলীগুলি এবং অ্যাসাইনমেন্ট ব্যতীত প্রত্যাবর্তিত মানগুলি না দেওয়ার বিষয়ে ভুলে গেছি, তাই আমি এটি গ্রহণ করব না:
p,f,d;s(c){for(p=2,f=d=0;p<c&&!d;){if(c%p==0){c/=p;++f;if(c%p==0)d=1;}++p;}p=c==p&&f==2&&!d;}
(কে বলেছিল যে আমি সি সম্পর্কে কিছু জানি ?;-)
মন্তব্যগুলিতে শেল স্ক্রিপ্ট সহ পরীক্ষার ফ্রেম এখানে দেওয়া হয়েছে:
/* betseg's program for sphenic numbers from
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h> /* compile with -lm */
/* l,j;a(i){for(l=1,j=0;l<i;i%++l?:(i/=l,j++));l=i==1&&j==3;} */
#if defined GOLFED
l,j;a(i){for(l=1,j=0;l++<i;fmod((float)i/l,l)?i%l?:(i/=l,j++):(j=9));l=i==1&&j==3;}
#else
int looker, jcount;
int a( intval ) {
for( looker = 1, jcount = 0;
looker++ < intval;
/* Watch odd intvals and even lookers, as well. */
fmod( (float)intval/looker, looker )
? intval % looker /* remainder? */
? 0 /* dummy value */
: ( inval /= looker, jcount++ /* reduce the parameter, count factors */ )
: ( jcount = 9 /* kill the count */ )
)
/* empty loop */;
looker = intval == 1 && jcount == 3; /* reusue looker for implicit return value */
}
#endif
/* for (( i=0; $i < 100; i = $i + 1 )) ; do echo -n at $i; ./sphenic $i ; done */
আমি আমার সংস্করণে পেতে বেটসেকের পূর্ববর্তী উত্তর ধার নিয়েছি।
এটি আমার বেটসেকের অ্যালগরিদমের আমার সংস্করণ, যা আমি আমার সমাধান পেতে গল্ফ করেছিলাম:
/* betseg's repaired program for sphenic numbers
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int sphenic( int candidate )
{
int probe, found, dups;
for( probe = 2, found = dups = 0; probe < candidate && !dups; /* empty update */ )
{
int remainder = candidate % probe;
if ( remainder == 0 )
{
candidate /= probe;
++found;
if ( ( candidate % probe ) == 0 )
dups = 1;
}
++probe;
}
return ( candidate == probe ) && ( found == 2 ) && !dups;
}
int main( int argc, char * argv[] ) { /* Make it command-line callable: */
int parameter;
if ( ( argc > 1 )
&& ( ( parameter = (int) strtoul( argv[ 1 ], NULL, 0 ) ) < ULONG_MAX ) ) {
puts( sphenic( parameter ) ? "true" : "false" );
}
return EXIT_SUCCESS;
}
/* for (( i=0; $i < 100; i = $i + 1 )) ; do echo -n at $i; ./sphenic $i ; done */
60
একটি sphenic নম্বর?2 × 2 × 3 × 5