Пример #1
0
int uniquePaths(int m, int n) {
    int i,j,C;
    int divisor[100],dividend[100];
    
    for(i=1;i<=n+m-2;i++){
        divisor[i]=dividend[i]=0;   
    }
    
    for(i=m;i<=m+n-2;i++){
        getPrime(dividend,i);
    }
    for(i=1;i<=n-1;i++){
        getPrime(divisor,i);
    }
    
    
    C=1;
    for(i=1;i<=n+m-2;i++){
        for(j=0;j<dividend[i]-divisor[i];j++){
            C*=i;
        }
    }

    return C;
}
Пример #2
0
int getPrime(int n, int lo, int hi){
    //This block contains the most naive way to find the nth prime.
    /*
    for (int i = 0; primenum < n; i ++){
        if (isPrime(i) == 1)
            primenum++;
    }*/
    printf("%i + %i\n", lo, hi);
    lo = (unsigned long) lo;
    hi = (unsigned long) hi;
    unsigned long primeguess = (lo+hi)/2;
    unsigned long primeguessnum = primesBelow(primeguess);
    printf("%i, %i\n", primeguess, primeguessnum);
    if (primeguessnum == n){
        while (isPrime(primeguess) == 0){
            primeguess -= 1;
        }
        return primeguess;
    }
    else if (primeguessnum > n){
        return getPrime(n, primeguess, hi);
    }
    else return getPrime(n, lo, primeguess);
     
}
Пример #3
0
int main()
{
    int t;
    scanf("%d",&t);
    getPrime();
    while (t--)
    {
        scanf("%lld",&n);
        memset(ws,-1,sizeof(ws));
        if (n==1000000000000LL)
        {
            puts("165633875427");
            continue;
        }
        if (!n)
        {
            puts("0");
            continue;
        }
        long long res=(get(n,1)-1)/2;
        for (int i=3; (long long)i*i<2*n; i+=2)
            res+=cp(i);
        printf("%lld\n",res/2);
    }
    return 0;
}
Пример #4
0
int main(int argc, char *argv[])
{
     linkList *l = ( linkList* )malloc( sizeof( linkList ) );
     initList( l );
     getPrime( 2, l );
     return 0;
}
//Costruttore alloca la memoria
HashClass::HashClass(){
    this->size=0;
    hashTable = new HashItem*[TABLE_SIZE];
    for (int i = 0; i < TABLE_SIZE; i++){
        hashTable[i] = NULL;
    }
    this->numeroPrimo =getPrime();
}
Пример #6
0
int main(){

    int t; scanf("%d", &t);
    while(t--){
        long n; scanf("%ld", &n);
        printf("%ld\n", getPrime(n));
    }

    return 0;
}
Пример #7
0
int main(){
  int i, j, mi;
  long long k;
  int T, N;
  
  ps = getPrime(SQRT_N_MAX, p);
  rep(i,ps){
    k = p[i];
    for(j=k;j<N_MAX;j+=k) if(!min_div[j]) min_div[j] = k;
  }
Пример #8
0
pf_result *
prime_1_svc(int *argp, struct svc_req *rqstp)
{
	static pf_result  result;

	result.num = getPrime(*argp);
	result.time = 0;
	
	return &result;
}
Пример #9
0
int main()
{
	long counter, sum = 2;

	for(counter = 3; counter <= 2000000; counter += 2)
		sum += getPrime(counter);
	
	printf("The sum of all primes below two million is %ld\n", sum);

	return 0;
}
Пример #10
0
void Menu::executePRIME() {
	int nMin = 0, nMax = 0;
	cout << "\t소수 구하기 함수를 선택하셨습니다. 범위를 입력해주세요." << endl;
	cout << "- 최소값 : ";
	cin >> nMin;
	
	cout << "- 최소값 : ";
	cin >> nMax;

	int cnt = getPrime(nMin, nMax);

	cout << "▶ 범위 " << nMin << " ~ " << nMax << " 사이의 소수의 개수는 " << cnt << "개 입니다." << endl;
}
Пример #11
0
 std::string execute(int variation)
 {
    switch (variation)
    {
       case 0:
          return to_string(bruteForce());
       case 1:
       case -1:
          return to_string(getPrime());
       default:
          return std::string("unavailable");
    }
    return NULL;
 }
Пример #12
0
int main(int argc, char *argv[]) {
  char buf[128];
  int k;
  unsigned int n;
  scanf("%s",buf);
  k = atoi(buf);
  if (k > MAXK) {
    printf("%i is too large\n",k);
    return 0;
  }
  init();
  n = getPrime(k);
  printf("Prime %i is %u\n",k,n);
  return 0;
}
Пример #13
0
int main(int argc, char *argv[]) {
    int n;

    printf("Please prime number to find: ");
    scanf("%d", &n);

    int *primes = findPrimes();
    int nprime = getPrime(primes, n);

    printf("%d \n", nprime);

    free(primes);

    return 0;
}
int main()
{
    getPrime();
    getFibPrime();
    int n;

    /*
    fibonacci 在 index 為質數時,fib[index] 也會是質數,也就是 fibonacci prime
    有一些特殊的狀況,這邊沒有處理到 index = 19 (prime[8])時,fib[index] 卻不為質數
    */
    fib[2] = 2;
    fib[3] = 3;
    while (scanf("%d", &n) != EOF)
        printf("%d\n", (int)fib[prime[n]]);
    
    return 0;
}
int main()
{
    int m = getPrime();
    int n;
    while (scanf("%d", &n) && n)
    {
        int ans = 0, temp = n;
        
        if (n == INT_MIN)//-2147483648
        {
            puts("31");
            continue;
        }
        else if (n < 0)
            n *= -1;

        //因數分解
        for (int i = 0; i < m&&n >= prime[i] * prime[i]; i++)
        {
            int count = 0;
            while (!(n%prime[i]))
            {
                count++;
                n /= prime[i];
            }

            if (count)
                if (!ans)
                    ans = count;
                else
                    ans = gcd(ans, count);
        }

        if (n != 1)//還有剩下就是質數,其指數為 1
            ans = 1;

        if (temp < 0)//負數處理
            while (!(ans & 1))
                ans /= 2;

        printf("%d\n", ans);
    }

    return 0;
}
Пример #16
0
/* Rehashing the hash table whenever the load factor
   is greater than or equal to 75%
   PRE:  hash - pointer to the header of the hash table
         load - int ( the load factor)
   POST: return the updated hash table
		 (either the new one after rehash or the old one)
*/
HASH *rehash(HASH *hash, int load)
{
	int i, count, success;
	int size = ((load*100)/hash->size);
	int flag = 0;
	DATA exc;
	DATA *temp;
	HASH *out = NULL;

	if( size >= 75)
	{
		printf("The hash table is going to rehash!\n");
		printf(".\n");
		printf("..\n");
		printf("...\n");
		size = getPrime(load*2);
		out = createHashTable(size);

		for (i = 0; i < hash->size; i++)
		{
			flag = 0;
			if(hash->table[i].card.name != NULL)
			{
				strcpy(exc.CCN, hash->table[i].card.CCN);
				exc.cvc = hash->table[i].card.cvc;
				exc.name = hash->table[i].card.name;
				strcpy(exc.exp,hash->table[i].card.exp);
				insertHash(out, exc);
				if (hash->table[i].list->count != 0)
				{
					count = hash->table[i].list->count;
					while(flag < count)
					{
						success = removeSNODE(hash->table[i].list, hash->table[i].list->head->dataPtr, (void**)&temp);
						if(success)
						{
							strcpy(exc.CCN, temp->CCN);
							exc.cvc = temp->cvc;
							exc.name = temp->name;
							strcpy(exc.exp, temp->exp);
							insertHash (out, exc);
							free(temp);
						}
						flag++;
					}
				}
			}
			free(hash->table[i].list);
		}

		free(hash->table);
		free(hash);
		hash = out;
		printf("DONE rehashing!\n");
	}
	else
		printf("The efficiency is less than 75. No rehashing!\n");


	return hash;
}
Пример #17
0
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//		Lab Required Functions - public
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool Hash::insert(int x)
{
	if (contains(x))
		return false;

	int index = 0;

	std::cout << "Load factor: " <<  (float(active + 1) / float(m_size)) << std::endl;
	if ((float(active + 1) / float(m_size)) > 0.5)
	{
		Hash* tempList = new Hash();
		Node* temp = m_front;
		for (int i = 0; i < m_size; i++)
		{
			if (temp->getValue() != -1)
				tempList->addBack(temp->getValue());
			temp = temp->getNext();
		}//for - gather hashed data
		tempList->addBack(x);

		//scrub hash
		scrub();
		//reset active
		active = 0;
		//adjust list for new bucket size (after calculating next prime #)
		adjust(getPrime(m_size));

		for ( ; !tempList->isEmpty(); )
		{
			int val = tempList->pop();

			for(int i = 0; i < m_size; i++)
			{
				temp = m_front;
				index = hash(val, i);

				for (int k = 0; k < index; k++)
					temp = temp->getNext();

				if (temp->getValue() == -1)
				{
					temp->setValue(val);
					active++;
					//break loop
					i = m_size;
				}
				//else keep going while hash = -1 with true flag
			}//for each entry in the hash table (mod makes this cycle through every element)
		}//for - while tempList is not empty
		
		delete tempList;
		return true;
	}//if - rehash everything!
	else
	{
		//insert new value
		Node* temp = m_front;
		for(int i = 0; i < m_size; i++)
		{
			temp = m_front;
			index = hash(x, i);
			//std::cout << "Val: " << i << " hash: " << index << std::endl;

			for (int k = 0; k < index; k++)
				temp = temp->getNext();
			if (temp->getValue() == -1)
			{
				//std::cout << "Inserting value at: " << i << std::endl;
				temp->setValue(x);
				active++;
				return true;
			}
			else if (temp->getValue() == x)
				i = m_size;		// duplicate precaution - really should never happen
			//else keep going while hash = -1 with true flag
		}//for each entry in the hash table (mod makes this cycle through every element)
	}
	return false;
}//insert
Пример #18
0
int main (int argc, char **argv){
    int n = atoi(argv[1]);
    printf("%i", getPrime(n, 1, INT_MAX - 1));
}
Пример #19
0
/*
 * Print out the 10 001st prime and then exit
 */
int main() {
    int prime = getPrime(NUMBER_OF_PRIMES);
    printf("10,001st prime: %d\n", prime);
}
Пример #20
0
 int countPrimes(int n) {
     return getPrime(n-1);
 }