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

1. ## 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..  Trả lời cùng với trích dẫn

2.  Thành viên chính thức 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 đã.  Trả lời cùng với trích dẫn

3. Giải toàn diện bài này theo vòng lặp for cái bạn.  Trả lời cùng với trích dẫn

4. 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
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
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.
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é   Trả lời cùng với trích dẫn

5. Nguyên bản được gửi bởi rox_rook 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
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
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.
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   Trả lời cùng với trích dẫn

6. ## 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   Trả lời cùng với trích dẫn

7. tìm trong đâu khởi tạo radom hay là mảng bạn nói rõ ra đc ko  Trả lời cùng với trích dẫn

8. 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  Trả lời cùng với trích dẫn

9. Nguyên bản được gửi bởi Memory 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;
}```  Trả lời cùng với trích dẫn

#### 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