Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Số sinh đôi!

  1. #1
    Ngày gia nhập
    05 2008
    Bài viết
    0

    Mặc định Số sinh đôi!

    Các số sinh đôi là các số nguyên tố mà khoảng cách giữa chúng là 2.Hãy in tất cả cặp số sinh đôi<1000.
    Mọi người giúp tôi giải bài này cái. Tôi dùng vòng lặp for mà ko run đc toàn báo lỗi chắc cú pháp của tôi sai. Mọi người giải giúp tôi cái. Cảm ơn nhiều..

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    49

    bạn phải post đoạn code đó lên thì mọi người mới biết là sai ở chỗ nào chứ, theo mình thì bạn hãy viết chương trình in ra số nguyên tố trước đi đã.

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    0

    Giải toàn diện bài này theo vòng lặp for cái bạn.

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Tìm trong cái đống này xem, hình như là có :
    C++ Code:
    1. //This is program belongs to Chan Nguyen
    2. //C.S.M10A Spring 2008- Sec #30589
    3. //Lab09 : Prime Number List
    4. #include <iostream>
    5. #include <iomanip>
    6. #include <string>
    7. #include <fstream>
    8. #include <cmath>
    9.  
    10. using namespace std;
    11.  
    12. //function prototype
    13. void PrintNameHeader(ostream &oss);
    14. void ProgramInfo();
    15. void GetStartEndValues(int& startNum, int& endNum);
    16. bool IsPrime(int num);
    17.  
    18. int main()
    19. {
    20.     //Declaration for all variables
    21.     int starting = 2;
    22.     int ending = 100;
    23.     char userChoice;
    24.     int twinPrimes = 0;
    25.     int totalPrimes = 0;
    26.     int temporary;
    27.  
    28.     string fileName;
    29.     ofstream dataClientFile;
    30.    
    31.     //Print out header and program information
    32.     PrintNameHeader(cout);
    33.     ProgramInfo();
    34.  
    35.     //Prompt user to enter the name of file.
    36.     cout << "What is the name of the output file ? : ";
    37.     getline(cin, fileName);
    38.     dataClientFile.open(fileName.c_str());
    39.    
    40.     //Ask user to change starting and ending values.
    41.     cout << "Default value is (2 - 100).\n";
    42.     cout << "Would you like to change the ending and starting values [Y / N] ? : ";
    43.     cin >> userChoice;
    44.    
    45.     if(userChoice == 'Y' || userChoice == 'y')
    46.     {
    47.         GetStartEndValues(starting, ending);
    48.     }
    49.    
    50.     PrintNameHeader(dataClientFile);
    51.     dataClientFile << right;
    52.     dataClientFile << "List of Prime numbers between " << starting << " and " << ending;
    53.     dataClientFile << endl << endl;
    54.     //2 is special prime and is the only one even prime.
    55.     if(starting == 2)
    56.     {
    57.         dataClientFile << setw(6) << starting;
    58.         totalPrimes++;
    59.     }
    60.    
    61.     //If starting value is even, then it's not prime
    62.     //Increase starting to 1 in order to get the statement "number += 2"
    63.     //will check all odd numbers. Assign its value to a variable name "temporary".
    64.     if((starting % 2) == 0)
    65.     {
    66.         temporary = starting + 1;
    67.     }
    68.     //If starting is odd, so just let it equal to itself.
    69.     else
    70.     {
    71.         temporary = starting;
    72.     }
    73.  
    74.     for(int number = temporary; number <= ending; number += 2)
    75.     {
    76.         if(IsPrime(number))
    77.         {
    78.             dataClientFile << setw(6) << number;
    79.             totalPrimes++;
    80.             if((number <= ending - 2) && (IsPrime(number + 2)))
    81.                 twinPrimes++;
    82.             if(totalPrimes % 10 == 0)
    83.                 dataClientFile << endl;
    84.         }
    85.     }
    86.    
    87.     dataClientFile << endl << endl;
    88.     dataClientFile << "There are " << totalPrimes << " primes between " << starting << " and " << ending << endl;
    89.     dataClientFile << "There are " << twinPrimes << " twin primes between " << starting << " and " << ending;
    90.     dataClientFile << endl << endl;
    91.  
    92.     cout << "..............................\n";
    93.     cout << "Writing data successfully.....\n\n";
    94.     cout << "Thanks for your time, see you later, bye !!!\n";
    95.     dataClientFile.close();
    96.    
    97.     return 0;
    98. }
    99.  
    100. void ProgramInfo()
    101. {
    102.     cout << "***************************************************" << endl;
    103.     cout << "* Welcome to Prime Number List Program.           *" << endl;
    104.     cout << "* This program will generate the number of primes *" << endl;
    105.     cout << "* on the interval given, by default is (2 - 100). *" << endl;
    106.     cout << "* Also, you can change the range, checking input  *" << endl;
    107.     cout << "* included. Have a great time !                   *" << endl;
    108.     cout << "***************************************************" << endl;
    109. }
    110.  
    111. void GetStartEndValues(int& startNum, int& endNum)
    112. {
    113.     do
    114.     {
    115.         cout << "Enter the starting number & ending number : " << endl;
    116.         cin >> startNum >> endNum;
    117.  
    118.         if(startNum > endNum)
    119.         {
    120.             cout << "....Error !!!\n";
    121.             cout << "Starting value must be less than or equal to ending value.\n\n";
    122.         }
    123.         if(startNum < 1 || endNum < 1)
    124.         {
    125.             cout << "....Error !!!\n";
    126.             cout << "Starting value and ending value must be greater than or equal to 1.\n\n";
    127.         }
    128.     }while(startNum < 1 || endNum < 1 || startNum > endNum);
    129. }
    130.  
    131. bool IsPrime(int num)
    132. {
    133.     if (num == 2 || num == 3) return true;
    134.     if (num % 2 == 0 || num % 3 == 0) return false;
    135.  
    136.     int variable = 5,
    137.         term = 2;
    138.     while(variable <= static_cast<int>(sqrt(static_cast<double>(num))))
    139.     {
    140.         if(num % variable == 0)
    141.             return false;
    142.         variable += term;
    143.         term = 6 - term;
    144.     }
    145.     return true;
    146. }

    Giải toàn diện bài này theo vòng lặp for cái bạn.
    Cậu muốn giải dùm thì phải ăn nói khéo 1 chút chứ nói huyệch toẹt ra thế thì chỉ có 1% được code dùm thôi. Rút kinh nghiệm nhé

  5. #5
    Ngày gia nhập
    05 2008
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Tìm trong cái đống này xem, hình như là có :
    C++ Code:
    1. //This is program belongs to Chan Nguyen
    2. //C.S.M10A Spring 2008- Sec #30589
    3. //Lab09 : Prime Number List
    4. #include <iostream>
    5. #include <iomanip>
    6. #include <string>
    7. #include <fstream>
    8. #include <cmath>
    9.  
    10. using namespace std;
    11.  
    12. //function prototype
    13. void PrintNameHeader(ostream &oss);
    14. void ProgramInfo();
    15. void GetStartEndValues(int& startNum, int& endNum);
    16. bool IsPrime(int num);
    17.  
    18. int main()
    19. {
    20.     //Declaration for all variables
    21.     int starting = 2;
    22.     int ending = 100;
    23.     char userChoice;
    24.     int twinPrimes = 0;
    25.     int totalPrimes = 0;
    26.     int temporary;
    27.  
    28.     string fileName;
    29.     ofstream dataClientFile;
    30.    
    31.     //Print out header and program information
    32.     PrintNameHeader(cout);
    33.     ProgramInfo();
    34.  
    35.     //Prompt user to enter the name of file.
    36.     cout << "What is the name of the output file ? : ";
    37.     getline(cin, fileName);
    38.     dataClientFile.open(fileName.c_str());
    39.    
    40.     //Ask user to change starting and ending values.
    41.     cout << "Default value is (2 - 100).\n";
    42.     cout << "Would you like to change the ending and starting values [Y / N] ? : ";
    43.     cin >> userChoice;
    44.    
    45.     if(userChoice == 'Y' || userChoice == 'y')
    46.     {
    47.         GetStartEndValues(starting, ending);
    48.     }
    49.    
    50.     PrintNameHeader(dataClientFile);
    51.     dataClientFile << right;
    52.     dataClientFile << "List of Prime numbers between " << starting << " and " << ending;
    53.     dataClientFile << endl << endl;
    54.     //2 is special prime and is the only one even prime.
    55.     if(starting == 2)
    56.     {
    57.         dataClientFile << setw(6) << starting;
    58.         totalPrimes++;
    59.     }
    60.    
    61.     //If starting value is even, then it's not prime
    62.     //Increase starting to 1 in order to get the statement "number += 2"
    63.     //will check all odd numbers. Assign its value to a variable name "temporary".
    64.     if((starting % 2) == 0)
    65.     {
    66.         temporary = starting + 1;
    67.     }
    68.     //If starting is odd, so just let it equal to itself.
    69.     else
    70.     {
    71.         temporary = starting;
    72.     }
    73.  
    74.     for(int number = temporary; number <= ending; number += 2)
    75.     {
    76.         if(IsPrime(number))
    77.         {
    78.             dataClientFile << setw(6) << number;
    79.             totalPrimes++;
    80.             if((number <= ending - 2) && (IsPrime(number + 2)))
    81.                 twinPrimes++;
    82.             if(totalPrimes % 10 == 0)
    83.                 dataClientFile << endl;
    84.         }
    85.     }
    86.    
    87.     dataClientFile << endl << endl;
    88.     dataClientFile << "There are " << totalPrimes << " primes between " << starting << " and " << ending << endl;
    89.     dataClientFile << "There are " << twinPrimes << " twin primes between " << starting << " and " << ending;
    90.     dataClientFile << endl << endl;
    91.  
    92.     cout << "..............................\n";
    93.     cout << "Writing data successfully.....\n\n";
    94.     cout << "Thanks for your time, see you later, bye !!!\n";
    95.     dataClientFile.close();
    96.    
    97.     return 0;
    98. }
    99.  
    100. void ProgramInfo()
    101. {
    102.     cout << "***************************************************" << endl;
    103.     cout << "* Welcome to Prime Number List Program.           *" << endl;
    104.     cout << "* This program will generate the number of primes *" << endl;
    105.     cout << "* on the interval given, by default is (2 - 100). *" << endl;
    106.     cout << "* Also, you can change the range, checking input  *" << endl;
    107.     cout << "* included. Have a great time !                   *" << endl;
    108.     cout << "***************************************************" << endl;
    109. }
    110.  
    111. void GetStartEndValues(int& startNum, int& endNum)
    112. {
    113.     do
    114.     {
    115.         cout << "Enter the starting number & ending number : " << endl;
    116.         cin >> startNum >> endNum;
    117.  
    118.         if(startNum > endNum)
    119.         {
    120.             cout << "....Error !!!\n";
    121.             cout << "Starting value must be less than or equal to ending value.\n\n";
    122.         }
    123.         if(startNum < 1 || endNum < 1)
    124.         {
    125.             cout << "....Error !!!\n";
    126.             cout << "Starting value and ending value must be greater than or equal to 1.\n\n";
    127.         }
    128.     }while(startNum < 1 || endNum < 1 || startNum > endNum);
    129. }
    130.  
    131. bool IsPrime(int num)
    132. {
    133.     if (num == 2 || num == 3) return true;
    134.     if (num % 2 == 0 || num % 3 == 0) return false;
    135.  
    136.     int variable = 5,
    137.         term = 2;
    138.     while(variable <= static_cast<int>(sqrt(static_cast<double>(num))))
    139.     {
    140.         if(num % variable == 0)
    141.             return false;
    142.         variable += term;
    143.         term = 6 - term;
    144.     }
    145.     return true;
    146. }

    Cậu muốn giải dùm thì phải ăn nói khéo 1 chút chứ nói huyệch toẹt ra thế thì chỉ có 1% được code dùm thôi. Rút kinh nghiệm nhé
    Hjx tại vì căng bài này mà ko giải đc mà hjx

  6. #6
    Ngày gia nhập
    01 2008
    Bài viết
    46

    Mặc định Số sinh đôi!

    tìm 2 số nguyên tố liên tiếp,nếu khoảng cách là 2 thì là sinh đôi
    mù english+ngu thuật toán+lười--->làm sao trở thành kỹ sư phần mềm

  7. #7
    Ngày gia nhập
    01 2008
    Bài viết
    17

    tìm trong đâu khởi tạo radom hay là mảng bạn nói rõ ra đc ko
    Để có tình yêu ta phải trở thành kẻ tàn nhẫn, hoặc chấp nhận là kẻ thất bại khi chưa ra trận

  8. #8
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    thì tìm các số nguyên tố từ 1-->999, nếu 2 số nguyên tố nào cách nhau 2 đơn vị thì là sinh đôi và dĩ nhiên là khi tìm được 1 số nguyên tố thì dùng 1 biến tạm để lưu nó để so sánh với số nguyên tố tìm được kế tiếp, nếu cách nhau 2 đơn vị thì in ra

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    TP. HCM
    Bài viết
    52

    Trích dẫn Nguyên bản được gửi bởi Memory Xem bài viết
    Các số sinh đôi là các số nguyên tố mà khoảng cách giữa chúng là 2.Hãy in tất cả cặp số sinh đôi<1000.
    Mọi người giúp tôi giải bài này cái. Tôi dùng vòng lặp for mà ko run đc toàn báo lỗi chắc cú pháp của tôi sai. Mọi người giải giúp tôi cái. Cảm ơn nhiều..
    Cách của tui là thế này, bạn tham khảo hen:

    Ý tưởng cũng chỉ là kiểm tra 2 số nguyên tố liên tiếp nếu hiệu của chúng bằng 2 thì in 2 số đó ra.

    Đầu tiên bạn dùng vòng for cho i chạy từ 2 đến 1000 kiểm tra xem nếu i là số nguyên tố thì gán b = i; nếu hiệu b - a == 2; thì in ra a, b. Sau đó gán lại a = b; vòng lên kiểm tra i nếu là nguyên tố thì gán b = i; rồi lại kiểm tra hiệu => in ra. Cứ thế tiếp tục cho tới khi i chạy tới 1000.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int ngto(int N);
    
    void main()
    {
    	int i, a, b;
    
    	clrscr();
    	printf("CAC CAP SO SINH DOI NHO HON 1000\n\n");
    
    	for(i = 2; i < 1000; i++)	{
    		if(ngto(i))	{
    			b = i;
    			if(b - a == 2)	{
    				printf("(%d %d)\n", a, b);
    				getch();
    			}
    			a = b;
    		}
    	}
    	getch();
    }
    
    int ngto(int N)
    {
    	int i, flag;
    
    	for(i = 2, flag = 1; i <= sqrt(N); i++)	{
    		if(!(N % i)) {
    			flag = 0; break;
    		}
    	}
    	return flag;
    }

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn